第二行的意义是什么:
public final class A {}
final A obj1=new A();
如果A
已经是不可变的,为什么人们可能想让obj1
成为最终版? (只是为了让它坚持一个独特的内存引用?)。
答案 0 :(得分:15)
final
表示对象已关闭以进行扩展...即。你不能将它子类化。
final
表示您无法重新分配变量。
答案 1 :(得分:2)
首先,A
不是永久性的,只需声明它final
。
然后,最终变量无法更改。如果obj1
是一个字段,则强制执行可变性(与final class
不同)。
如果它是局部变量,则意味着您可以安全地在匿名类中使用它(否则编译器无法确定在执行匿名类主体之前/有时它不会发生更改)