我只是实现了一个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);
}
谢谢你的回答,我会花一些时间考虑你的话。 – jackalope
使用第三种解决方案进行解决。 – jackalope