如果我们有一个私有(private)final实例变量要传递给私有(private)方法,当作为参数传递时,我们是否在函数中使用final修饰符重新声明它?例如:
public class GraphAlgo {
private final source;
public GraphAlgo(source) {
this.source = source
}
public void runAlgo() {
runAlgoUsingSource(source);
}
private runAlgoUsingSource(final source) { // here final is declared on a final field
//-- whatever.
}
}
不要为已经是final的参数声明final。 优势。防止重复的 Final 修饰符 缺点:不提供明确的图片,例如:如果 GraphAlgo 是 10000 行代码,那么只需查看函数“runAlgoUsingSource”,他将无法直观地了解“source”是否是最终的。
这种情况下的一般约定是什么?
最佳答案
这里,source
已经是一个实例变量。为什么将其传递给方法?就此而言,在这里,
private runAlgoUsingSource(final source) {
source
现在是另一个变量,作用域为局部变量,且命名与实例变量相同。 (它还需要一个类型。)此本地 source
是否为 final
并不取决于 this.source
(实例变量)是否为 最终
。
关于java - 重复的最终声明,应该避免吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18220610/