构造对象时对对象的最终引用

use*_*534 5 java

说我有一个类的引用,它是最终的像:

public final Mycalss ref;
Run Code Online (Sandbox Code Playgroud)

和MyClass有几个属性(不是最终的).现在,当我像这样构造MyClass对象时:

ref = new MyClass( some arguments);
Run Code Online (Sandbox Code Playgroud)

这是否意味着其他线程可以安全地查看Myclass的内容,因为它是最终引用的?

Abu*_*kar 4

建立引用final意味着一旦将对象分配给该引用,就无法将其他对象分配给该引用。

但即使引用声明为 ,您也可以更改同一对象的值final

喜欢 :

public final Myclass ref;
ref = new Myclass();

//this is not allowed
ref = new MyClass();   //since you have already assigned an object to your final reference

//this is allowed
ref.setSomeProperty("abc"):
Run Code Online (Sandbox Code Playgroud)

有关线程和最终的答案,请参阅@Erwin Bolwidt 答案。