节点对象通用数组的转换问题
Casting Issue for Generic Array of Node Objects
我在创建 java 通用数组时遇到问题,我需要创建一个 Node 类型的数组。
所以,我这样做是为了声明:
private Node<E> [] nodes;
之后进行初始化,nodes = (Node<E>[]) new Node [values.length];
当我尝试设置节点对象的属性值 nodes[i].setValue(values[i]);
时,我得到 NullPointerException,这意味着我的节点数组设置有问题。
我做错了什么?是转换不正确的结果,还是我的代码中的其他原因?
在Java中,初始化数组时,默认情况下,数组中的对象一开始都会被设置为null。所以当你调用 nodes = (Node<E>[]) new Node [values.length]
时,虽然你正在创建一个节点数组,但它们最初都设置为 null。为了解决这个问题,您需要使用 for 循环手动构造数组中的每个节点,即
for (int i = 0; i < values.length; i++) {
nodes[i] = new Node();
}
我在创建 java 通用数组时遇到问题,我需要创建一个 Node 类型的数组。
所以,我这样做是为了声明:
private Node<E> [] nodes;
之后进行初始化,nodes = (Node<E>[]) new Node [values.length];
当我尝试设置节点对象的属性值 nodes[i].setValue(values[i]);
时,我得到 NullPointerException,这意味着我的节点数组设置有问题。
我做错了什么?是转换不正确的结果,还是我的代码中的其他原因?
在Java中,初始化数组时,默认情况下,数组中的对象一开始都会被设置为null。所以当你调用 nodes = (Node<E>[]) new Node [values.length]
时,虽然你正在创建一个节点数组,但它们最初都设置为 null。为了解决这个问题,您需要使用 for 循环手动构造数组中的每个节点,即
for (int i = 0; i < values.length; i++) {
nodes[i] = new Node();
}