将 java 方法参数作为最终参数

2022-08-31 09:41:41

这与下面的代码有什么区别。将参数声明为 有什么好处吗?finalfinal

public String changeTimezone( Timestamp stamp, Timezone fTz, Timezone toTz){  
    return ....
}

public String changeTimezone(final Timestamp stamp, final Timezone fTz, 
        final Timezone toTz){
    return ....
}

答案 1

由于形式化方法参数是局部变量,因此仅当它们被声明为 final 时,才能从内部匿名类访问它们。

这样,您就不必在方法主体中声明另一个局部最终变量:

 void m(final int param) {
        new Thread(new Runnable() {
            public void run() {
                System.err.println(param);
            }
        }).start();
    }

答案 2

摘自最终关键词的定稿

最终参数

下面的示例声明了最终参数:

public void doSomething(final int i, final int j)
{
  // cannot change the value of i or j here...
  // any change would be visible only inside the method...
}

这里使用 final 来确保两个索引 i 和 j 不会意外地被该方法重置。这是防止错误更改参数值的阴险错误的简单方法。一般来说,短方法是防止此类错误的更好方法,但最终参数可以成为编码风格的有用补充。

请注意,最终参数不被视为方法签名的一部分,并且在解析方法调用时被编译器忽略。参数可以声明为最终参数(或不声明),而不会影响方法的重写方式。