为什么我的对象数组中的所有元素都为null?

时间:2017-05-09 08:30:23

标签: java

我有2节课。第一个描述了一个项目,秒是围绕第一个类的项目数组构建的。

我了解到只创建一个对象数组并不能初始化它们。所以我在第二个类的构造函数中放了一个for循环来初始化所有项目。 然而,当进入clear()函数时,列表数组的所有元素仍然为null。那是为什么?

class HneAnalogItem {
    String  description;
    String  unit;         
    float   value;

   HneAnalogItem(){}        
}

class HneAnalogInfo
{
    static final private int MAXANALOGINFOITEMS = 100;

    private HneAnalogItem[] list;

    HneAnalogInfo() {
        list = new HneAnalogItem[MAXANALOGINFOITEMS];
        for(HneAnalogItem item : list) {
            item = new HneAnalogItem();
        }

        clear();
    }

    void clear() {
        for(HneAnalogItem item : list) {
            item.description = "";
            item.unit = "";
            item.value = 0;
        }
    }
}

1 个答案:

答案 0 :(得分:4)

for (HneAnalogItem item : list) {
    item = new HneAnalogItem();
}

这个增强的for循环不会初始化数组元素。它相当于:

for (int i = 0; i < list.length; list++) {
    HneAnalogItem item = list[i];
    item = new HneAnalogItem();
}

初始化所需的数组元素:

for (int i = 0; i < list.length; list++) {
    list[i] = new HneAnalogItem();
}