[英]Generic class constructor failing with a class cast exception error at runtime
我正在尝试创建自己的通用链表数据类型,但是我遇到了构造函数问题,并且遇到了类转换异常。 任何人都知道如何解决这个问题以及为什么会发生这种情况?
这是我的相关代码:
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new Object[10];
}
}
违规行是构造函数中的实现行。
这是我的SinglyLinkedListNode类:
public class SinglyLinkedListNode<E> extends LinkedListNode<E>{
private E data;
public SinglyLinkedListNode(E data)
{
this.data = data;
}
}
而我的LinkedListNode类只是一个空的(现在)SinglyLinkedListNode扩展的抽象类。
这是我收到的编译器错误:
java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[LabstractDataTypes.SinglyLinkedListNode; 在abstractDataTypes.SinglyLinkedList。(SinglyLinkedList.java:23)
Object[]
与任何其他数组(例如String[]
)不兼容。 但这会奏效:
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new SinglyLinkedListNode<?>[10];
}
}
请注意,也无法使用new SinglyLinkedListNode<E>[10]
,因为通常无法创建通用数组:
E[] myArray = new E[10]; // doesn't work, if E is a generic type parameter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.