我有以下java代码:
List<SomePojo> list = new ArrayList<SomePojo>();
//add 100 SomePojo objects to list.
现在列表有 100 个对象。
如果我再创建一个实例,如下所示:
List<SomePojo> anotherList = new ArrayList<SomePojo>();
anotherList.addAll(list);
现在,内存中将有多少个对象:100 个或 200 个对象?
在下面的行中,添加的是对象还是仅引用?
anotherList.addAll(list);
如果我对 list
进行任何更改,相同的更改是否反映到 anotherList
,反之亦然?
原文由 user1016403 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个对象在内存中只有一次。您对
list
的第一次添加只是添加了对象引用。anotherList.addAll
也只会添加引用。所以内存中仍然只有 100 个对象。如果您通过添加/删除元素更改
list
,则anotherList
不会更改。但是,如果您更改list
中的任何对象,那么当从anotherList
访问它时,它的内容也将被更改,因为两个列表都指向相同的引用。