繁体   English   中英

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

[英]How can I get rid of this ClassCastException? (java)

我正在尝试创建通用类“ 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;)。

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

为什么不申报

array = new DataStruct[capacity];

无法将Object[] DataStruct[]DataStruct[]

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

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

因此,将其声明为DataStruct[capacity]是明智的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM