Невозможно создать массив узлов - PullRequest
0 голосов
/ 08 декабря 2018

Я получаю следующую ошибку при попытке создать массив узлов:

Исключение в потоке "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 голосов
/ 08 декабря 2018

This:

new Object[MAX_LEVEL]

означает «новый массив типа Object[] и размера MAX_LEVEL, где каждый элемент null».


This:

(Node[])new Object[MAX_LEVEL]

означает то же самое, плюс «но проверьте, имеет ли он тип Node[]; если нет, поднимите ClassCastException».Но это избыточно, потому что вы только что создали массив с типом Object[], так что вы знаете, , он не имеет типа Node[].Таким образом, он будет всегда повышаться ClassCastException.


Вместо этого вам нужно написать следующее:

new Node[MAX_LEVEL]

, что означает "новый массив типа Node[] и размер MAX_LEVEL, где каждый элемент null ".

...