java实体类多次用set赋值问题

挥戈小飞侠 2015-11-13 05:00:22

List<Class> list = new ArrayList<Class>()
Class c = new Class();
c.setName("aaa");
c.setAge("20");
list.add(c);

c.setName("bbb");
c.setAge("21");
list.add(c);


这个list中存的是两个第二次的赋值 怎么回事
...全文
3175 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白晒太阳 2015-11-13
  • 打赏
  • 举报
回复
小白晒太阳 2015-11-13
  • 打赏
  • 举报
回复 1
Class c = new Class(); 对象的引用就一个c,你后面修改c指向的内存中的实例了,一改的话就全改了了。。 你在 c2.setName("bbb"); c2.setAge("21"); 之前再new一个新的实例就好了。。 Class c2 = new Class();
解开者 2015-11-13
  • 打赏
  • 举报
回复
看ArrayList的add方法的代码:
    public boolean add(E e) {
	ensureCapacity(size + 1);  // Increments modCount!!
	elementData[size++] = e;
	return true;
    }
发现只保存了 元素的引用,所以最后的结果是数组里2个元素都引用了对象c

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧