我想打电话定义如下嵌套Java集合泛型
<T> void foo(Class<? extends Collection<T>>)
的方法,但也没有办法编译器让我过去
foo(ArrayList<Integer>.class);
什么语法来获得类型类泛型类型?
我实现,我有一个
Map<Key, Collection<Value>>
,并要插入集合中的值通常情况下。如果集合不存在,它应该创建一个新集合并在其中插入值。 到目前为止,我有下面的代码,但类型安全警告:可以使用谷歌的Guava库实现
public static <K, V, C extends Collection<V>> boolean addToMappedCollectionNotNull(Map<K, C> aMap, K key, V element, Class<? extends Collection> type) {
C collection = aMap.get(key);
if (collection == null) {
try {
collection = (C)type.newInstance();
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
}
aMap.put(key, collection);
}
return collection.add(element);
}
你能发布确切的错误消息吗? – jmg 2011-05-24 08:39:11
在方法声明行中:Collection是一个原始类型。参考类型集合应参数化 –
Jordi
2011-05-24 22:49:56
在集合=(C)type.newInstance();行:类型安全:从捕获#2中未选中投射?将Collection扩展到C – Jordi 2011-05-24 22:51:04