使用=运算符共享Java对象的生命周期

Leo*_*rdo 0 java

Class1有一个类型的属性Class2,名为pippo:

public class Class1{

           private Class2 pippo; //an attributo of Class1

           .....

           public Class2 getPippo()
           { return this.pippo;}
}
Run Code Online (Sandbox Code Playgroud)

现在考虑一个格式良好的Class1named 实例,pluto并考虑以下流程:

Class2 obj=pluto.getPippo();

// I apply some modification on obj 
Run Code Online (Sandbox Code Playgroud)

现在明确修改obj了类型的实例Class1.

问题:这些修改是否也适用于Class1 pluto对象,这意味着由于操作符objpluto.pippo具有相同的"生命" =

T.J*_*der 6

问题:此类修改是否也适用于Class1 pluto对象,

这个问题的答案是:问题本身就是一种误解.:-)

pippo并且obj指向(指向)同一对象的变量.所以没有两个对象以某种方式链接,有一个对象,你有两个引用(指针).

很自然地,如果通过一个引用更改该对象的状态,则通过另一个引用可以看到该更新状态.

我们来看一个更简单的例子:

Thingy t1 = new Thingy();
Run Code Online (Sandbox Code Playgroud)

这让我们记忆犹新:

+---------------+      +-----------------+
| t1 (variable) |----->| Thingy instance |
+---------------+      +-----------------+
                       | field: value    |
                       | ...             |
                       +-----------------+

如果我们这样做:

Thingy t2 = t1;
Run Code Online (Sandbox Code Playgroud)

我们有:

+---------------+
| t1 (variable) |--+
+---------------+  |
                   |
                   |   +-----------------+
                   +-->| Thingy instance |
                   |   +-----------------+
                   |   | field: value    |
+---------------+  |   | ...             |
| t2 (variable) |--+   +-----------------+
+---------------+

随着形势pippoobj是完全一样的.