我想使用一个类来创建一个Objects数组,然后将该数组转换为它的类型,而无需转换其中的每个Object,这可能吗?
这是我到目前为止尝试过的:
class Bar {
public void hello() {
System.out.println("Hello from inside of bar");
}
}
使用类创建对象数组:
class Arr<T> {
Object[] obj;
int i = 0;
public Arr(int size) {
obj = new Object[size];
}
public void add(T t) {
obj[i] = t;
i++;
}
}
第二次尝试,使用T而不是Object定义数组:
class ArrTwo<T> {
T[] obj;
int i = 0;
public ArrTwo(int size) {
obj = (T[]) new Object[size];
}
public void add(T t) {
obj[i] = t;
i++;
}
}
和主要部分:
class Main {
public static void main(String args[]) {
TestArr();
TestArrTwo();
}
public static void TestArr() {
Arr<Bar> arr = new Arr<Bar>(1);
arr.add(new Bar());
Bar barArr[] = (Bar[]) arr.obj; // java.lang.ClassCastException
barArr[0].hello();
}
public static void TestArrTwo() {
ArrTwo<Bar> arr = new ArrTwo<Bar>(1);
arr.add(new Bar());
Bar barArr[] = (Bar[]) arr.obj; // java.lang.ClassCastException
barArr[0].hello();
}
}
两个测试功能都给我这个错误:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LBar;