[英]class cast exception and generics (java)
我正在实现自己的优先级队列,并使用一个使用它的名为sportsball的类。 优先级队列基于泛型,并使用Node(T对象,int值)(即玩家名称及其分数)。 尝试运行程序时出现类强制转换异常错误。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node;
at PriorityQueue.<init>(PriorityQueue.java:35)
at sportsball.main(sportsball.java:48)
有问题的行是:PriorityQueue.java:35:
Node[] array = (Node[])(new Object[initialSize]);
sportsball.java:48:
PriorityQueue<String> queue = new PriorityQueue<String>(start, step);
谢谢您的帮助!
注意:
当我尝试使用PriorityQueue.java:35行时:
Node[] array = new Node[initialSize];
错误:将弹出通用数组创建。
您不能将Object
转换为Node
,因此您不应将Object[]
Node[]
转换为Node[]
。 只需直接创建Node[]
。
Node[] array = new Node[initialSize];
您不能像以前那样将对象投射到节点上
Node[] array = (Node[])(new Object[initialSize]);
因此,出现了ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
,这很明显对象无法ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
为Node Type
所以你可以选择这个选项
Node[] array = new Node[initialSize];
您不能简单地将Object []强制转换为Node []。 这确实会生成ClassCastException。 只需创建一个Node []即可( Node[] array = new Node[initialSize];
)。 没有比这更多的代码,我无话可说。
请注意,ClassCastException消息已经表明了问题。 [Ljava.lang.Object;
引用Object[]
,类似地, [LPriorityQueue$Node;
指Node[]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.