【问题标题】:Casting Issue for Generic Array of Node Objects节点对象的通用数组的转换问题
【发布时间】:2021-02-24 01:17:19
【问题描述】:

我在创建 Java 泛型数组时遇到问题,我需要创建一个 Node 类型的数组。

所以,我这样做是为了声明:

private Node<E> [] nodes; 及更高版本用于初始化,nodes = (Node<E>[]) new Node [values.length];

当我尝试设置 Node 对象的属性值 nodes[i].setValue(values[i]); 时,我得到 NullPointerException,这意味着我的节点数组设置有问题。

我做错了什么?是错误转换的结果,还是我的代码中的其他原因?

【问题讨论】:

    标签: java arrays generics nullpointerexception


    【解决方案1】:

    在Java中,当初始化一个数组时,数组中的对象会默认全部初始化为null。因此,当您调用nodes = (Node<E>[]) new Node [values.length] 时,虽然您正在创建一个节点数组,但它们最初都设置为空。为了解决这个问题,您需要使用 for 循环手动构造数组中的每个节点,即

    for (int i = 0; i < values.length; i++) {
        nodes[i] = new Node();
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2019-03-17
      • 2015-09-21
      相关资源
      最近更新 更多