尝试创建节点数组时出现以下错误:
线程“ main”中的异常java.lang.ClassCastException:[Ljava.lang.Object;无法转换为[LSkipList $ Node;
这是我的代码:
public class Node {
Key key;
Value val;
Node[] next;
//constructor
public Node(Key k, Value v) {
key = k;
val = v;
next = (Node[])new Object[MAX_LEVEL];
}
}
答案 0 :(得分:1)
此:
new Object[MAX_LEVEL]
表示“类型为Object[]
,大小为MAX_LEVEL
的新数组,其中每个元素均为null
。”
此:
(Node[])new Object[MAX_LEVEL]
表示相同的含义,外加“但请检查其类型是否为Node[]
;否则,请提高ClassCastException
”。但这是多余的,因为您只是创建了类型为Object[]
的数组,所以您知道它没有类型为Node[]
。因此它将始终提高ClassCastException
。
相反,您需要编写以下代码:
new Node[MAX_LEVEL]
表示“类型为Node[]
,大小为MAX_LEVEL
的新数组,其中每个元素均为null
。