2017-10-17 44 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

請勿張貼代碼爲圖像。張貼文本 – 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預訂購它影響所有實例。

相關問題