2017-10-17 1 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 모든 인스턴스가 적용됩니다.

관련 문제