【问题标题】:List overriding objects java [closed]列出覆盖对象java [关闭]
【发布时间】:2013-02-08 11:53:30
【问题描述】:

您好,我的 java 代码有问题...

问题就在我列表的 add(e) 中:

List<Sms> listSms = new ArrayList<Sms>();
   for(int i = 0; i < grupo.size(); i++){
        Grupo group = new GrupoDao().carregaById(grupo.get(i),usuario.logado);
        for(int j = 0; j < group.getContatos().size(); j++){
            sms.setNumber(group.getContatos().get(j).getNumber());
            listSms.add(sms);//Here he override all the list sms.number to last one added
        }
    }

谁能帮帮我?

【问题讨论】:

    标签: java oop list arraylist


    【解决方案1】:

    什么你添加到列表中是不是一个实例,而一个实例的引用。因此,在年底,在list所有引用是指相同的实例。这将意味着,你对实例使用任何参考的变化,会反映所有前面的列表中添加的引用。 P>

    在解决办法是每次在列表中添加对它的引用时创建新的Sms实例。那你就必须这样做,在for循环。 P>

    for(int j = 0; j < group.getContatos().size(); j++){
        Sms sms = new Sms();
        sms.setNumber(group.getContatos().get(j).getNumber());
        listSms.add(sms);//Here he override all the list sms.number to last one added
    }
    

    【讨论】:

      【解决方案2】:

      您一次又一次地添加相同的对象/实例。您需要像这样向列表中添加一个新实例:

      Sms x=new Sms();
      x.setNumber......
      listSms.add(x);
      

      【讨论】:

        猜你喜欢
        • 2018-05-02
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 2013-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多