我应该在可能的情况下最终设置对可变对象的引用吗?

时间:2012-12-10 20:02:11

标签: java

我理解将final用于对象字段是一个好习惯,这些对象字段1)在构造函数中只设置一次2)对不可变对象的引用。

在构造函数中只设置一次但引用可变对象的字段呢?

目前,我更喜欢仅将final用于不可变对象引用,因为我可以快速查看哪些字段代表对象的可变状态(那些不是最终的)。

更新:我知道最终在技术上如何工作,特别是将对可变对象的引用设置为final将不会使对象不可变。如果我想最大限度地提高代码的清晰度和可理解性,那么这个问题就是关于何时使用final。

2 个答案:

答案 0 :(得分:2)

这可能不是一个流行的观点,但我尽可能使用final - 如果您使用它来声明意图,那么可以通过评论来完成。如果您对此反应是“评论不好”,那么您应该重新考虑使用final关键字 - 因为它基本上是评论,对吗?

然而,final关键字确实为任何阅读代码的人提供了(几乎)保证,该变量不会重置在任何地方(当然忽略反射......) - 这是一个有用的东西有时候知道。

您可能也对Jon对this question

的回答感兴趣

编辑抱歉,我应该澄清“尽可能”适用于字段 - 而不是类,方法等,因为这很奇怪。

答案 1 :(得分:1)

即使您声明变量final,引用的对象仍然是可变的。因此,如果这是您要避免的,那么它将无效(我的意思是使引用的对象不可变)