我正在尝试创建自己的泛型linkedlist数据类型,但在构造函数方面遇到了问题,并且出现了类强制转换异常。有人知道如何解决这个问题吗?为什么会发生这种情况?
这是我的相关代码:
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.(SinglyLinked List.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