我正在尝试创建Deque的链表列表,链表的每个节点都由内部类Node
的实例定义,但我得到了这个:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LRandomizedQueue$Node;
我不知道如何解决这个问题。这就是我所拥有的:
private class Node {
Item item;
Node next;
Node prev;
}
@SuppressWarnings("unchecked")
private Node[] nd = (Node[]) new Object[100];
有人可以告诉我我做错了什么,并帮我解决这个问题? 非常感谢你的时间。
编辑:我似乎对创建通用数组与内部数组的数组感到困惑。非常感谢回复。
答案 0 :(得分:2)
您正在创建一个对象数组,然后尝试将它们转换为节点数组;你需要创建一个节点数组
试
private Node[] nd = new Node[100];
答案 1 :(得分:1)
private Node[] nd = (Node[]) new Object[100];
它应该抛出ClassCastException
。无法将数组对象强制转换为Node
对象。
创建喜欢 -
Node[] nd = new Node[100];
答案 2 :(得分:1)
private Node[] nd = (Node[]) new Object[100];
你为什么要这样做?
您显然是将错误的对象投射到错误的引用类型。
该对象的类型为Object[]
,您将其转换为Node[]
,这将永远不会有效。
改为做。
Node[] nd = new Node[size];
答案 3 :(得分:0)
您基本上需要:private Node[] nd = new Node[100];
因为数组本身就是对象,因为new Object[100]
将返回数组类的对象,所以不能将它转换为其他类对象,这里是Node
。
答案 4 :(得分:0)
您正在创建一个对象数组并尝试将其强制转换为Node
数组。不允许这种转换,因为对象不是Node
你可以做到
Node[] nd = new Node[100];
如果您需要Node
或
Object[] nd = new Object[100];
如果你只需要一个对象数组
将来,您应该知道,通常当您获得ClassCastException
时,这意味着您在案例无效时尝试将类强制转换为其他类,并且应该尝试理解对象的层次结构