执行这行代码的预期行为是什么?:
Foo f = someOtherObject.getFoo(); //We get a reference of a Foo object from another class
f = new Foo();
Run Code Online (Sandbox Code Playgroud)
someOtherObject.getFoo()会返回新对象,还是旧对象?如果我们更改第二行代码,该怎么办:
f = null;
Run Code Online (Sandbox Code Playgroud)
someOtherObjct.getFoo()会返回null,还是旧对象?
您可以将其f视为包含指向内存中某个对象的值.当您重新分配f时f = something,它只是更改f指向的内存中的位置.
但这并不影响f最初指向的对象.
所以在这两种情况下,getFoo()即使你重新分配也会返回旧对象f(假设你的getFoo方法没有改变任何东西,当然是一个简单的getter).