为什么将对最终类的实例的引用声明为final?

时间:2011-07-06 17:28:42

标签: java oop immutability final

第二行的意义是什么:

public final class A {}
final A obj1=new A();

如果A已经是不可变的,为什么人们可能想让obj1成为最终版? (只是为了让它坚持一个独特的内存引用?)。

2 个答案:

答案 0 :(得分:15)

第一行中的

final表示对象已关闭以进行扩展...即。你不能将它子类化。

第二行中的

final表示您无法重新分配变量。

答案 1 :(得分:2)

首先,A不是永久性的,只需声明它final

然后,最终变量无法更改。如果obj1是一个字段,则强制执行可变性(与final class不同)。

如果它是局部变量,则意味着您可以安全地在匿名类中使用它(否则编译器无法确定在执行匿名类主体之前/有时它不会发生更改)

相关问题