List添加对象添加的是对象的引用

来源:互联网 发布:梦想的数据 编辑:程序博客网 时间:2024/06/05 03:01

今天在项目开发中遇到一个有趣的问题,我把一个循环遍历一个List把它的对象赋值给另一个对象,再将这个对象放入List中,可是遍历完,List里面的对象数据完全是一样的,才突然意识到这个问题。

于是写了一段代码进行测试验证:

package Test;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/4/19. */public class AddObjTest {    public static class Project{        private int id;        private String projectName;        public String getProjectName() {            return projectName;        }        public void setProjectName(String projectName) {            this.projectName = projectName;        }        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }    }    public static void main(String[] s ){        List<Project> projectList=new ArrayList<>();        Project project=new Project();        for(int i=0;i<3;i++) {            project.setId(i+1);            project.setProjectName("项目"+i);            projectList.add(project);        }        System.out.print(projectList.toString());    }}

debug了下,在添加到projectList中的project都是一样的,在添加的时候,其实添加的是project的引用,当project发生数据变化时,projectList的数据也会跟着变,Map,Set也是同理。这是对象的使用与普通数据类型不一样之处。
这里写图片描述

0 0