2017-05-09 85 views
2

我有2个班。第一个描述了一个项目,秒是围绕第一类的一系列项目建立的。为什么我的对象数组中的所有元素都为空?

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

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; 
     } 
    } 
} 

回答

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(); 
} 
相关问题