我有一个对象,我使用方法 theList.add(theObj)
添加到 List
。
如果我现在对这个对象 theObj
进行更改,这些更改是否会始终反射(reflect)在存储在列表中的对象中?
如果是,这是否意味着 java 中的 List
仅存储引用而不存储传递给它的对象的唯一副本?
最佳答案
您没有在列表中存储对象。您在列表中存储一个引用。
是的,如果您通过任何 引用对对象进行更改,那么该更改将是可见的,否则您将获得相同的对象。
赋值、参数传递等也是如此:
StringBuilder builder = new StringBuilder();
StringBuilder builder2 = builder;
builder.append("foo");
System.out.println(builder2); // Prints foo
此处 builder
和 builder2
的值是对同一个 StringBuilder
对象的引用 - 因此已将字符串附加到对象中的数据通过 builder
,您可以通过 builder2
获得相同的信息。
关于java - 将对象存储在列表中,然后对该对象进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593852/