Java 泛型类构造函数在运行时因类强制转换异常错误而失败

Java 泛型类构造函数在运行时因类强制转换异常错误而失败,java,generics,Java,Generics,我正在尝试创建自己的泛型linkedlist数据类型,但构造函数有问题,并且遇到了类强制转换异常。有人知道如何解决这个问题以及为什么会发生这种情况吗 这是我的相关代码: public class SinglyLinkedList<E> { private LinkedListNode<E>[] linkedListNodeList; public SinglyLinkedList() { linkedListNodeList = (Si

我正在尝试创建自己的泛型linkedlist数据类型,但构造函数有问题,并且遇到了类强制转换异常。有人知道如何解决这个问题以及为什么会发生这种情况吗

这是我的相关代码:

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[]
。将对象强制转换为类型不会改变对象的类型。你不能将汽车强制转换为鸟,并希望汽车将自身转换为鸟。如果动物实际上是鸟,你可以将动物强制转换为鸟。也就是说,为什么你需要链表中的节点数组?你知道链表是什么吗?