Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列出覆盖java的对象_Java_Oop_List_Arraylist - Fatal编程技术网

列出覆盖java的对象

列出覆盖java的对象,java,oop,list,arraylist,Java,Oop,List,Arraylist,嗨,我的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

嗨,我的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
        }
    }
List listSms=new ArrayList();
对于(int i=0;i

有人能帮我吗?

您添加到列表中的不是实例,而是对实例的引用。因此,最后,
列表中的所有引用都引用了同一个实例。这意味着,您使用任何引用对实例所做的更改将反映在您先前添加到列表中的所有引用中

解决方案是每次在列表中添加对它的引用时,都创建一个新的
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
}
for(int j=0;j
您一次又一次地添加相同的对象/实例。您需要向列表中添加一个新实例,如下所示:

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