2017-05-09 4 views
2

私は2つのクラスを持っています。最初はアイテムを記述し、秒はファーストクラスのアイテムの配列の周りに構築されます。オブジェクトの配列内のすべての要素がnullになるのはなぜですか?

私は、オブジェクトの配列を作成するだけでは初期化しないことを知りました。だから私はすべての項目を初期化するために2番目のクラスのコンストラクタにfor-loopを置く。 しかし、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; 
     } 
    } 
} 

答えて

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(); 
} 
関連する問題