【发布时间】:2013-12-08 09:38:39
【问题描述】:
我正在尝试创建自己的通用链表数据类型,但在构造函数时遇到了问题,并且遇到了类转换异常。有谁知道如何解决这个问题以及为什么会这样?
这是我的相关代码:
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new Object[10];
}
}
违规行是构造函数中的实现行。
这是我的 SingleLinkedListNode 类:
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)
【问题讨论】:
-
new Object[10]的类型是Object[]。这不是SinglyLinkedListNode<E>[]。将对象转换为类型不会更改对象的类型。你不能把汽车投给鸟,然后希望汽车把自己变成鸟。如果动物实际上是鸟,您可以将动物施放给鸟。也就是说,为什么需要链表中的节点数组?你了解什么是链表吗?