1

我知道将final对象字段用于 1)在构造函数中仅设置一次 2)对不可变对象的引用是一种很好的做法。

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

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

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

4

2 回答 2

2

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

但是,final 关键字确实(几乎)向任何阅读代码的人保证该变量不会在任何地方重置(当然忽略反射......) - 这有时是一件有用的事情。

您可能还对 Jon 对这个问题的回答感兴趣

编辑:对不起,我应该澄清“尽可能”适用于字段 - 而不是类、方法等,因为那会很奇怪。

于 2012-12-10T20:41:03.170 回答
1

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

于 2012-12-10T20:04:30.223 回答