不可变类属性的需求必须与私有一起最终确定

时间:2018-07-07 03:19:43

标签: java immutability

我是JAVA的初学者,在Singleton课堂上遇到了这个疑问:

由于在JAVA中创建不可变类时,我们将其属性设为私有,所以为什么需要将它们定为终结?我们没有不可变的二传手,而且属性是私有的,因此不能从外部访问它们以更改它们。

那为什么要把它们定下来呢?

1 个答案:

答案 0 :(得分:1)

相关:Do java finals help the compiler create more efficient bytecode?

也相关:Does use of final keyword in Java improve the performance?

顺便说一句,对以上问题的回答是“理论上是,但实际上可能不是”。在这种情况下,我认为这不会对性能造成很大的影响(即使这样做,充其量也可能只是微优化)。

话虽如此,主要优点(以及在链接的问题中也提到了这一点)是记录和执行设计意图。将某物标记为final实际上可以告诉您很多有关特定项目如何适合整体设计以及以后打算如何使用的信息。

它也可以作为执行机制。

这有助于防止人们因为不知道而无意间“夸大”设计决定,尤其是在您的班级发生变化,变得更加复杂等情况下。

TL; DR 虽然不是必需的,但它有助于强调它的设计是不可变的。