最终字段和不可变类

时间:2015-05-20 03:48:36

标签: java private immutability final

根据这个:A Strategy for Defining Immutable Objects

类不可变的一个条件是将所有字段设为final和private。

为什么要最后???其他条件还不够吗?

4 个答案:

答案 0 :(得分:1)

根据不可变对象的定义(由维基百科提供)“在面向对象和函数式编程中,不可变对象是一个对象,其状态在创建后无法修改。”

创建最终对象后,无法重新分配。如果没有最终的关键工作,您仍然可以在创建对象后更改它。

另见 final object in java

答案 1 :(得分:1)

反问题“为什么不最终?”。

final表示对于原始类型,一旦分配了这个值就不能改变它,这足以使它们成为不可变的,

对于非原始类型,一旦分配了引用,就无法更改引用(第一步是Immutability),您需要执行更多操作,如您共享的链接中所述。

答案 2 :(得分:0)

如果没有字段final,我们可以创建一个不可变的类/对象,如果有其他条件可用的话。

但我认为final在处理并发和同步时很有用。

答案 3 :(得分:0)

链接文档的关键是此引用

  

并非所有记录为“不可变”的类都遵循这些规则....但是,此类策略需要复杂的分析,不适合初学者。

这是初学者的教程。告诉他们“让一切变得私密和最终”然后必须解释所有边缘情况,如何正确处理可变引用,并确保不让你的引用逃脱。