最终变量解释

2022-09-03 12:35:02

我知道编译器如何解释Java中的最终关键字,但是我们程序员应该如何解释它的含义?应该是:

1) 此变量无法更改(例如由内部类使用)

2)我不打算更改此变量(可能对成员变量有一些优化好处)。

我之所以问这个问题,是因为我已经处理过代码,默认情况下,所有内容都声明为最终状态(上面的选项2),在我看来,这会降低关键字的价值并隐藏真正无法更改的值!将变量声明为最终变量是否仍具有性能优势?


答案 1

默认情况下,一切都是最终的,这是一件好事。您对代码的不可变性建模的次数越多,推理起来就越容易。

在我看来,使用几乎与性能无关。它是关于对代码的其余部分进行断言(不会更改此变量),这可以帮助读者理解代码,并且可以由编译器检查。final

编辑:以上是我对字段的看法。对于局部变量(包括参数),我个人只在匿名内部类中使用变量时使用。这与字段不同,因为:final

  • 很容易看到该方法的整个上下文 - 如果不是,那本身就是一个问题。
  • 由于它不代表对象(或类)的状态,因此不可变性的好处并不真正适用。

答案 2

最终关键字应该被放弃,它应该是所有适用情况下的标准,并且最终性应该只能用一个关键字来撤销,比如

this_variable_will_change_unexpectedly_behind_your_back

任何 IDE 都不应自动完成此关键字,并且无法使用 Ctrl-V 插入它。


推荐