java - 将对象存储在列表中,然后对该对象进行更改

标签 java list data-structures reference storage

我有一个对象,我使用方法 theList.add(theObj) 添加到 List

如果我现在对这个对象 theObj 进行更改,这些更改是否会始终反射(reflect)在存储在列表中的对象中?

如果是,这是否意味着 java 中的 List 仅存储引用而不存储传递给它的对象的唯一副本?

最佳答案

您没有在列表中存储对象。您在列表中存储一个引用

是的,如果您通过任何 引用对对象进行更改,那么该更改将是可见的,否则您将获得相同的对象。

赋值、参数传递等也是如此:

StringBuilder builder = new StringBuilder();
StringBuilder builder2 = builder;

builder.append("foo");
System.out.println(builder2); // Prints foo

此处 builderbuilder2 的值是对同一个 StringBuilder 对象的引用 - 因此已将字符串附加到对象中的数据通过 builder,您可以通过 builder2 获得相同的信息。

关于java - 将对象存储在列表中,然后对该对象进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593852/

相关文章:

c# - 无效操作异常 : The type of the argument object 'Scratch' is not primitive

java - 如何处理我的库中任意用户提供的类型?

java - Spring MVC/Apache Tiles 应用程序中定义的 'param' 变量在哪里

python - 如何删除列表中彼此相邻的重复值之一?

c++ - 如何对 float 数组使用基数排序?

c# - 是否有一种可移植的方式来表示任意数据库表(结构仅在运行时已知),类似于 DataSet/DataTable 的方式?

C++ 优先字典

java - 通过 JSON 解析器在 GoogleMap V2 上保存当前位置

java - 输入验证电话号码

javascript - 使用 jQuery 开始新的编号列表