如何摆脱这种ClassCastException?(Java)的

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;).

你能告诉我创建它的正确方法吗?

Ami*_*nde 6

为什么不宣布

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]