java - 无法创建节点数组

标签 java generics skip-lists

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

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [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];

      }
    }

最佳答案

这个:

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”。

关于java - 无法创建节点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53678542/

相关文章:

data-structures - 确定性跳过列表自上而下插入中的违规行为

java - 调用另一种方法来获取结果集并正确关闭连接?

java - 实现搜索栏并在空对象引用错误上获取 'java.lang.Object[] java.util.Collection.toArray()'

java - 在 Google App Engine 项目上使用 Google Translate API V2

java - 如何实例化一个使用给定 double 值扩展 Number 的泛型类?

c - 为什么这个程序会导致段错误?

java - 连接到 IMAP javax.net.ssl.SSLException : Unrecognized SSL message

c# 如何处理这种泛型约束?

delphi - 如何使用TD词典?

c - 一个Segfaulting Skip List,一个毁了的周末(C编程)