【发布时间】:2015-03-12 10:24:17
【问题描述】:
我想创建一个类数组,我有这些:
1) 工作正常
Class<MyClass>[] array = (Class<MyClass>[]) new Class<?>[list.size()];
2)java.lang.ClassCastException
Class<MyClass>[] array = (Class<MyClass>[]) Array.newInstance(MyClass.class, list.size());
3)我们有一个通用的方法,工作正常
public static <T> List<T> method(T arg , T[] array){
array = (T[]) Array.newInstance(arg.getClass(), 1);
ArrayList<T> list = new ArrayList<T>(Arrays.asList(array));
array[0] = arg;
return new ArrayList<T>(Arrays.asList(array));
}
请解释为什么我们在 2 中得到异常?据我了解,我们在 3 中做同样的事情,那么有什么区别?
更新
我想我的困惑是因为我们有:
类型不匹配:无法从 List
List<MyClass> list = Utils.addToList(MyClass.class, null);
作品
List<Class<MyClass>> list = Utils.method(MyClass.class, null);
我想我错过了什么,但我不确定是什么......
所以我终于清楚了我的想法:
List<Class<MyClass>> list = Utils.method(MyClass.class, null);
Class<MyClass>[] array2 = (Class<MyClass>[]) Array.newInstance(MyClass.class.getClass(), list.size());
List<Class<MyClass>> list2 = Utils.method(MyClass.class, list.toArray(array2));
【问题讨论】: