マップを簡単に構築するために実装しただけですMapBuilder
が、HashMap.class のインスタンスを取得しようとすると、HashMap.class を使用してそのようなインスタンスを取得できないことが突然わかりました。
違法です!
では、この問題を解決する理由と方法を誰か教えてもらえますか?
MapBuilder は次のとおりです。
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;
}
}
}
テストコードは以下のとおりです。
public static void main(String[] args) {
HashMap<String, String> v = start(HashMap<String,String>.class).put("a", "b").get();
System.out.println(v);
}