Java - 使用方法参数定义HashMap类型

时间:2013-12-18 19:57:46

标签: java hashmap

我想要一个方法参数来定义HashMap将接受的类。有点像:

private HashMap hashMap = new HashMap();

public boolean createMap(Object obj) {
    return hashMap = new HashMap<String, obj.getClass()>() != null;
}

2 个答案:

答案 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);