我想要一个方法参数来定义HashMap将接受的类。有点像:
private HashMap hashMap = new HashMap();
public boolean createMap(Object obj) {
return hashMap = new HashMap<String, obj.getClass()>() != null;
}
答案 0 :(得分:4)
你不能做你想做的事情:你不能“定义一个HashMap
将接受的类”,因为在运行时HashMap
将接受 all classes。
另一方面,你可以做的是:
private Map<String, ?> map;
public <V> void createMap(Class<V> clazz) {
map = Collections.checkedMap(new HashMap<String, V>(),
String.class, clazz);
}
...实际上会通过反射强制执行您尝试创建的限制。在这种情况下,您的hashMap
成员应该具有Map<String, Object>
类型,但它会强制执行
答案 1 :(得分:0)
定义一个类型化的函数,它接受你想要的类型作为地图的值
public <T> Map<String, T> checkedStringKeyMap(Class<T> type) {
return Collections.checkedMap(new HashMap<String, T>(), String.class, type);
}
然后按如下方式创建地图
Map<String, Person> persons = checkedStringKeyMap(Person.class);