지도를 쉽게 작성하려면 MapBuilder
을 구현하십시오. 하지만 HashMap.class의 인스턴스를 가져 오려고하면이 인스턴스를 가져 오기 위해 HashMap.class를 사용할 수 없습니다. .일반 매개 변수화 된 클래스를 인스턴스화하는 방법
불법입니다!
그래서 아무도 왜이 문제를 해결할 수 있는지 말해 줄 수 있습니까?
import java.util.Map;
public abstract class MapBuilder {
public static <K, V, T extends Map<K, V>> InnerMapBuilder<T, K, V> start(
Class<T> clazz) {
return new InnerMapBuilder<>(clazz);
}
public static class InnerMapBuilder<T extends Map<K, V>, K, V> {
private T target;
public InnerMapBuilder(Class<T> clazz) {
try {
target = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
public InnerMapBuilder<T, K, V> put(K key, V val) {
target.put(key, val);
return this;
}
public T get() {
return target;
}
}
}
을 그리고 테스트 코드는 다음과 같습니다 :
이start
이후
public static void main(String[] args) {
HashMap<String, String> v = start(HashMap<String,String>.class).put("a", "b").get();
System.out.println(v);
}
좋은 답변을 주셔서 감사합니다. 잠시 시간을내어 귀하의 단어에 대해 생각해 보겠습니다. – jackalope
세 번째 해결 방법을 사용하여 해결되었습니다. – jackalope