2017-10-17 14 views
-6

なぜ私のモデルクラスのデータが間違っていますか? Log.dのなぜ私のModelクラス、データが間違っていますか?

enter image description here

List<DataMasterList> dataMasterLists = new ArrayList<DataMasterList>(); 

private void addMaster() { 
    for (int i = 0; i < 6; i++) { 
     DataMasterList dataMasterList = new DataMasterList(); 
     dataMasterList.setMaster_code("000" + i); 
     dataMasterList.setProduct_name("name" + i); 
     dataMasterList.setAmount(4 + i + ""); 
     dataMasterList.setUnit_price(10 + ""); 
     dataMasterLists.add(dataMasterList); 
     Log.d("test1",dataMasterLists.get(i).getMaster_code()+" "); 
    } 

    Log.d("test2",dataMasterLists.get(0).getMaster_code()+" "); 
} 

内容:

test1: 0000 
test1: 0001 
test1: 0002 
test1: 0003 
test1: 0004 
test1: 0005 

test2: 0005 

なぜtest2 = 0005はいますか?

なぜdataMasterListsのすべての値が0005であるのですか?

+3

コードをImageとして送信しないでください。テキストとして投稿する – Jens

+3

デバッガを使用してコードが動作しない理由を確認してください – Jens

+2

このhttps://stackoverflow.com/a/19843507/4730957によれば、クラスの静的フィールドが原因である可能性があります。 DataMasterListクラスコードを追加してください。 –

答えて

0

問題は、フィールドのクラスの動作を変更するアクセス修飾子です。 クラスインスタンス変数とクラス変数と混同しています。

ケース1(インスタンス変数)

public class DataMasterList { 

    private String masterCode; 

    public DataMasterList() { 
     // TODO Auto-generated constructor stub 
    } 

    public String getMasterCode() { 
     return this.masterCode; 
    } 

    public void setMasterCode(String masterCode) { 
     this.masterCode = masterCode; 
    } 

private String masterCode;あなただけのアクセサメソッドでは、このフィールドにアクセスすることができますし、新しいインスタンスを作成するときに、各インスタンスは独自のフィールドを持っています。

ケース2(静的変数)

public class DataMasterList { 

    static String masterCode; 

    public DataMasterList() { 
     // TODO Auto-generated constructor stub 
    } 

    public static String getMasterCode() { 
     return masterCode; 
    } 

    public static void setMasterCode(String masterCode) { 
     DataMasterList.masterCode = masterCode; 
    } 

} 

static String masterCode;あなたはアクセサメソッドなしで直接フィールドにアクセスして無しオブジェクトのインスタンスを作成することができます。とにかく、あなたの場合のようにインスタンスを作成する場合は、最後の時間を変更するときmasterCodeそれはすべてのインスタンスに影響します。

関連する問題