最终在下面的代码之间有什么不同.将参数声明为final是否有任何优势.
public String changeTimezone( Timestamp stamp, Timezone fTz, Timezone toTz){
return ....
}
public String changeTimezone(final Timestamp stamp, final Timezone fTz,
final Timezone toTz){
return ....
}
Run Code Online (Sandbox Code Playgroud) 好的,所以我理解为什么我们应该从这个问题宣布论证是最终的,但我不明白为什么我们不应该...
由于Java总是使用pass by value,这意味着我们不能通过给定的参数返回一个新值,我们只能覆盖它,并使参数无用,因为我们不使用传递的值...
Java中非最终方法参数的唯一好处是您不必创建参数类型的局部变量吗?
PS这个问题是由... PMD
的规则引发的MethodArgumentCouldBeFinal
class hello {
public static void main(String arg[]){
int[] c = { 2 };
final int[] d = { 3 };
}
static void useArgs(final int a, int b, final int[] c, int[] d) {
c[0]=d[0]; // no error
c = d; //error
}
}
Run Code Online (Sandbox Code Playgroud)
伙计们可以解释一下这种行为吗?