【问题标题】:Why my Model class, data is incorrect?为什么我的模型类,数据不正确?
【发布时间】:2017-10-17 09:09:54
【问题描述】:

为什么我的模型类数据不正确?

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()+" ");
}

Log.d 的内容:

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

test2: 0005

为什么test2 = 0005

为什么dataMasterLists 中的每个值都是0005

【问题讨论】:

  • 请勿将代码发布为图片。将其发布为文本
  • 使用调试器找出您的代码不工作的原因
  • 根据stackoverflow.com/a/19843507/4730957,这可能是由于类中的静态字段。能否请您添加 DataMasterList 类代码?
  • 也发布您的DataMasterList 课程
  • 您对此有何期望?

标签: java android


【解决方案1】:

问题在于改变字段类行为的访问修饰符。 您正在混淆类实例变量和类变量。

案例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; 您可以直接访问字段,无需访问器方法,也无需创建对象的任何实例。无论如何,如果您像在您的情况下创建实例,当您上次修改 ma​​sterCode 时,它将影响所有实例。

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多