无法制作节点数组

时间:2018-12-08 00:54:41

标签: java generics skip-lists

尝试创建节点数组时出现以下错误:

  

线程“ 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];

      }
    }

1 个答案:

答案 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