Rob*_*ert 2 java arrays casting exception object
我正在尝试创建泛型类"DataStruct"的数组.代码如下:
public class DataArray<T> {
DataStruct<T>[] array;
int index;
public DataArray(int capacity) {
array = (DataStruct<T>[]) new Object[capacity]; // !!!
this.index = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个java.lang.ClassCastException(Ljava.lang.Object;不能在测试它时在末尾标有三个惊叹号的行上强制转换为[LArrayBased.DataStruct;).
你能告诉我创建它的正确方法吗?
为什么不宣布
array = new DataStruct[capacity];
Run Code Online (Sandbox Code Playgroud)
Object[]无法施展DataStruct[].
因为数组本质上是可反复的,这意味着数组在运行时知道它们的类型所以如果你把它转换成Object []下面的类型,你将再次遇到问题
Object[] array = new DataStruct[capacity];
array[0] = 10;//Array Store exception
Run Code Online (Sandbox Code Playgroud)
所以宣称它是明智的 DataStruct[capacity]