Java 为什么要将对final类实例的引用声明为final?
第二行的意义是什么:Java 为什么要将对final类实例的引用声明为final?,java,oop,immutability,final,Java,Oop,Immutability,Final,第二行的意义是什么: public final class A {} final A obj1=new A(); 如果A已经是不可变的,为什么要将obj1设为final?(只是为了让它粘到一个唯一的内存引用?) 第一行中的final表示对象已关闭以进行扩展…即。您不能将其子类化 第二行中的final表示您不能重新分配变量。首先,A不是不可变的,您只需声明它final 那么,最终的变量就不能改变了。如果obj1是一个字段,这将强制执行可变性(与最终类不同) 如果它是一个局部变量,则意味着您可以在
public final class A {}
final A obj1=new A();
如果
A
已经是不可变的,为什么要将obj1
设为final?(只是为了让它粘到一个唯一的内存引用?) 第一行中的final
表示对象已关闭以进行扩展…即。您不能将其子类化
第二行中的
final
表示您不能重新分配变量。首先,A
不是不可变的,您只需声明它final
那么,最终的变量就不能改变了。如果obj1
是一个字段,这将强制执行可变性(与最终类不同)
如果它是一个局部变量,则意味着您可以在匿名类中安全地使用它(否则编译器无法确保它在执行匿名类主体之前/期间不会得到更改)示例代码中的任何内容都不意味着不变性。