最终变量解释
2022-09-03 12:35:02
我知道编译器如何解释Java中的最终关键字,但是我们程序员应该如何解释它的含义?应该是:
1) 此变量无法更改(例如由内部类使用)
或
2)我不打算更改此变量(可能对成员变量有一些优化好处)。
我之所以问这个问题,是因为我已经处理过代码,默认情况下,所有内容都声明为最终状态(上面的选项2),在我看来,这会降低关键字的价值并隐藏真正无法更改的值!将变量声明为最终变量是否仍具有性能优势?
我知道编译器如何解释Java中的最终关键字,但是我们程序员应该如何解释它的含义?应该是:
1) 此变量无法更改(例如由内部类使用)
或
2)我不打算更改此变量(可能对成员变量有一些优化好处)。
我之所以问这个问题,是因为我已经处理过代码,默认情况下,所有内容都声明为最终状态(上面的选项2),在我看来,这会降低关键字的价值并隐藏真正无法更改的值!将变量声明为最终变量是否仍具有性能优势?
默认情况下,一切都是最终的,这是一件好事。您对代码的不可变性建模的次数越多,推理起来就越容易。
在我看来,使用几乎与性能无关。它是关于对代码的其余部分进行断言(不会更改此变量),这可以帮助读者理解代码,并且可以由编译器检查。final
编辑:以上是我对字段的看法。对于局部变量(包括参数),我个人只在匿名内部类中使用变量时使用。这与字段不同,因为:final
最终关键字应该被放弃,它应该是所有适用情况下的标准,并且最终性应该只能用一个关键字来撤销,比如
this_variable_will_change_unexpectedly_behind_your_back
任何 IDE 都不应自动完成此关键字,并且无法使用 Ctrl-V 插入它。