Java 泛型类构造函数在运行时因类强制转换异常错误而失败
我正在尝试创建自己的泛型linkedlist数据类型,但构造函数有问题,并且遇到了类强制转换异常。有人知道如何解决这个问题以及为什么会发生这种情况吗 这是我的相关代码:Java 泛型类构造函数在运行时因类强制转换异常错误而失败,java,generics,Java,Generics,我正在尝试创建自己的泛型linkedlist数据类型,但构造函数有问题,并且遇到了类强制转换异常。有人知道如何解决这个问题以及为什么会发生这种情况吗 这是我的相关代码: public class SinglyLinkedList<E> { private LinkedListNode<E>[] linkedListNodeList; public SinglyLinkedList() { linkedListNodeList = (Si
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new Object[10];
}
}
公共类单链接列表{
私有LinkedListNode[]linkedListNodeList;
公共单链接列表()
{
linkedListNodeList=(SingleLinkedListNode[])新对象[10];
}
}
有问题的行是构造函数中的实现行
以下是我的SingleLinkedListNode类:
public class SinglyLinkedListNode<E> extends LinkedListNode<E>{
private E data;
public SinglyLinkedListNode(E data)
{
this.data = data;
}
}
公共类SingleLinkedListNode扩展LinkedListNode{
私人电子数据;
公共单链接ListNode(E数据)
{
这个数据=数据;
}
}
我的LinkedListNode类只是一个空的(目前)抽象类,由SingleLinkedListNode扩展
这是我收到的编译器错误:
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new Object[10];
}
}
java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为[LabstractDataTypes.SinglyLinkedListNode;
在abstractDataTypes.SinglyLinkedList。(SinglyLinkedList.java:23)一个
对象[]
与任何其他数组(例如字符串[]
)不兼容。但这将起作用:
public class SinglyLinkedList<E> {
private LinkedListNode<E>[] linkedListNodeList;
public SinglyLinkedList()
{
linkedListNodeList = (SinglyLinkedListNode<E>[]) new SinglyLinkedListNode<?>[10];
}
}
新对象[10]
的类型是对象[]
。它不是SingleLinkedListNode[]
。将对象强制转换为类型不会改变对象的类型。你不能将汽车强制转换为鸟,并希望汽车将自身转换为鸟。如果动物实际上是鸟,你可以将动物强制转换为鸟。也就是说,为什么你需要链表中的节点数组?你知道链表是什么吗?