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

时间:2012-10-20 16:26:38

标签: java arrays exception object casting

我正在尝试创建泛型类“DataStruct”的数组。 代码如下:

public class DataArray<T> {
DataStruct<T>[] array;
int index;

public DataArray(int capacity) {
    array = (DataStruct<T>[]) new Object[capacity]; // !!!
    this.index = 0;
}
}

我得到了一个java.lang.ClassCastException(Ljava.lang.Object;不能强制转换为[LArrayBased.DataStruct;)在末尾标有三个感叹号的行,同时测试它。

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

1 个答案:

答案 0 :(得分:6)

为什么不宣布

array = new DataStruct[capacity];

Object[]无法投放到DataStruct[]

因为数组本质上是可反复的,这意味着数组在运行时知道它们的类型所以如果你将其转换为Object [],如下所示,你将再次遇到问题

Object[] array = new DataStruct[capacity]; 
array[0] = 10;//Array Store exception

因此明智地将其声明为DataStruct[capacity]