因此,Google提出了很多关于获取参数化类型.class
的问题,但我试图以另一种方式。如何使用Class对象作为参数化类型?
我有一个类的列表,我需要制作一个地图,它使用Class
作为键和一个类型为Class的对象的ArrayList
作为值。就像这样:
Class[] classes = getArrayOfClasses();
HashMap<Class, ArrayList<?>> map = new HashMap<Class, ArrayList<?>>();
for(Class c : classes) {
map.put(c, new ArrayList<c>()); // here is where the problem is
}
问题当然是它需要一个参数化类型,而不是一个类。一种可能的解决方法是只使用map.put(c, new ArrayList<Object>())
,但是我必须知道类型并投射每个物体。
MyClass myObj = (MyClass) map.get(MyClass.class).get(0);
我也试图使一个初始化函数是这样的:
private <T> ArrayList<T> makeArrayList(Class<T> c) {
return new ArrayList<T>();
}
这不得不说我希望将工作的语法,但它仍然给我留下的Object
的ArrayList
是不得不投。
那么有什么办法可以让ArrayList
参数化为类的类型?
使用通用方法:'列表 getList(类别类型)'。 –
2014-11-02 19:51:07