繁体   English   中英

通用类构造函数在运行时失败并出现类转换异常错误

[英]Generic class constructor failing with a class cast exception error at runtime

我正在尝试创建自己的通用链表数据类型,但是我遇到了构造函数问题,并且遇到了类转换异常。 任何人都知道如何解决这个问题以及为什么会发生这种情况?

这是我的相关代码:

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。(SinglyLinkedList.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM