【发布时间】:2019-02-13 23:39:38
【问题描述】:
为了澄清这一点,请考虑以下代码:
public class Foo {
private Object thing;
public Foo() { ... }
public Object getThing() {
return this.thing;
}
}
public class Bar {
public Bar() { ... }
public Object makeNewThing() { ... }
public void changeThing() {
Foo foo = new Foo();
Object thing = foo.getThing();
thing = makeNewThing();
}
}
当Bar mutates 修改它从foo.getThing() 接收的Object 的值时,foo 中的原始私有成员mutated 是否被修改?
编辑:一些词
【问题讨论】:
-
Reference 是 JVM 用来识别对象的数字(整数)。引用变量将保存像 123 这样的返回值,因为这恰好是 JVM 的对象标识符。每个变量都有自己的保留空间,以便将值复制到该空间。如果你有两个引用变量持有相同的引用,它们都可以修改同一个对象。
-
对象的变异是通过使用
.点运算符并调用mutator方法(如果可用且可访问)或直接更改属性(如果可用且可访问)来完成的。 )=更改特定引用所指的对象。 -
最后一个语句不应该包括
makeNewThing而不是makeThing吗?
标签: java access-modifiers