1

我正在尝试将一个类型的类映射T到一个ArrayList类型T

Map<Class<?>, ArrayList<?>> map_ = new HashMap<Class<?>, ArrayList<?>>();

问题是我无法将项目添加到Arraylist从此地图中检索到的项目中:

map_.put(A.class, new ArrayList<A>());
A item = new A();
map_.get(item.getClass()).add(item); //failure!

我将如何构建我的地图以便我可以访问并添加到它包含的数组列表中?

4

1 回答 1

0

将您的声明更改为:

Map<Class<?>, List<Object>> map_ = new HashMap<>();

当您get 从列表中进行转换时,您将不得不进行转换,因为您无法Map<Class<T>, List<T>> forAll T在 Java 中定义 a,即无法关联类型参数,因此您不得不使用上面的定义和转换来做您想做的事情。

于 2013-01-18T02:16:40.270 回答