0

可能重复:
创建对象数组时出现 NullPointerException

我在主要方法中有 NullPointerException

array[0].name = "blue"; 

结构类:

public class Items {

String name = "";
String disc = "";
}

主要课程:

public class ItemsTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Items[] array = new Items[2];

            array[0].name = "blue"; //NullPointerException
        array[0].disc = "make";
        array[1].name = "blue";
        array[1].disc = "blue";
           }
}

请帮助我如何解决这个问题。

4

3 回答 3

2
Items[] array = new Items[2];

您必须初始化数组的每个元素,默认情况下它们是null

做了,

Items[] array = new Items[2];
//initialization
array[0] = new Items();
array[0].name = "blue"; //NullPointerException
array[0].disc = "make";

//initialization
array[1] = new Items();
array[1].name = "blue";
array[1].disc = "blue";
于 2012-07-18T09:55:19.480 回答
1

当你写这行时:

Items[] array = new Items[2];

您初始化了一个可以包含 2 个元素的 Items 类型的数组,或者换句话说,您只初始化了容器。

数组中的每个元素都是一个对象,也需要初始化,并且在寻址时array[0].name您试图访问当前的内部元素null 如果您检查 Jigar Joshi answer,您会看到他还初始化了数组中的每个 Items 元素.

希望这可以帮助!

于 2012-07-18T11:49:24.710 回答
0
Items[] array = new Items[2]; // Creates an array of Items with null values

因此不得不使用

Items[] array = { new Items(), new Items() }; // as suggested by aioobe....

或需要初始化数组

array[0] = new Items();
于 2012-07-18T10:12:29.967 回答