泛型类构造函数失败,运行时出现类强制转换异常错误



我正在尝试创建自己的泛型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

最新更新