2017-05-09 251 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(); 
} 
相關問題