我经常遇到如下所示的方法:
public void foo(final String a, final int[] b, final Object1 c){
}
Run Code Online (Sandbox Code Playgroud)
如果在不传递最终参数的情况下调用此方法会发生什么.即稍后更改的Object1(因此未声明为final)可以很好地传递给此方法
在Java中,您可以使用final关键字限定局部变量和方法参数.
public static void foo(final int x) {
final String qwerty = "bar";
}
Run Code Online (Sandbox Code Playgroud)
这样做会导致无法在方法体中重新分配x和qwerty.
这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?
假设我正在foo(int i)用Java 编写一个方法.
由于i通过值传递,因此可以安全地更改它foo.例如
void foo(int i) {
i = i + 1; // change i
...
}
在Java中更改方法的参数是否被认为是好的或坏的做法?