не рекомендуется. использование
аюсь написатьMap
строитель. Один из конструкторов позволит клиенту указать типMap
они хотят построить
public class MapBuilder<K, V> {
private Map<K, V> map;
/**
* Create a Map builder
* @param mapType the type of Map to build. This type must support a default constructor
* @throws Exception
*/
public MapBuilder(Class<? extends Map<K, V>> mapType) throws Exception {
map = mapType.newInstance();
}
// remaining implementation omitted
}
Намерение состоит в том, чтобы иметь возможность создавать экземпляры компоновщика с помощью:
MapBuilder<Integer, String> builder = new MapBuilder<Integer, String>(LinkedHashMap.class);
или же
MapBuilder<Integer, String> builder = new MapBuilder<Integer, String>(HashMap.class);
Кажется, что сигнатура типа аргумента конструктора в настоящее время не поддерживает это, потому что строка выше вызывает ошибку компиляции «Не удается разрешить конструктор».
Как я могу изменить свой конструктор так, чтобы он принимал классы, которые реализуютMap
только?