【发布时间】:2014-03-01 02:50:26
【问题描述】:
假设我有一个通过传递对象来调用的方法。
public String retrieveXyz(Criteria criteria){
//get some info out of criteria and do something.
}
将标准设为最终标准是否是一种好习惯,以便此处理程序不能用于针对传递的对象以外的其他对象或其开销,因为这不能保护对象状态不被更改。
public String retrieveXyz(final Criteria criteria){
//get some info out of criteria and do something.
}
【问题讨论】:
-
我从来不用
final方法参数。我很好奇为什么它们实际上是为了。 -
如果您在函数内更改
criteria中保存的引用,它不会更改所保存的函数外部变量的引用。 -
@Antoniossss 当您需要在接口的匿名实现中使用此参数时,它很有用,例如实现
Runnable以在您的方法中使用线程。 -
stackoverflow.com/questions/316352/… duplicate 如果您尝试修改引用,这允许编译器优化以及有用的警告。您当然应该这样做,并在您的 IDE 中打开自动为您执行此操作的设置。
-
@Stretch 你真的在你的代码中这样做了吗?冗长的代价很高,这是我不使用它的唯一原因。许多人会同意
final应该是默认值,并且必须使用var或类似名称将变量标记为非最终变量。