列出重写对象java

gml*_*ork 0 java oop list arraylist

嗨我的java代码有问题...

问题是在我的列表的添加(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
        }
    }
Run Code Online (Sandbox Code Playgroud)

有谁能够帮我 ?

Roh*_*ain 10

您添加到列表中的内容不是实例,而是对实例的引用.所以,最后,所有引用list都指的是同一个实例.这意味着,您使用任何引用对您的实例所做的更改将反映在您之前添加到列表中的所有引用中.

解决方案是Sms每次在列表中添加对它的引用时创建一个新实例.你必须在for循环中做到这一点.

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
}
Run Code Online (Sandbox Code Playgroud)