2

この例では、宣言はどのような価値をObject final提供しますか?

private void doSomethingClever(final Object o) {

}
4

4 に答える 4

3

これにより、他の誰かがあなたのコードにアクセスして、パラメーターを変更できないことを知ることができます。値を設定すると、コンパイラエラーが発生します。

于 2012-05-05T01:56:00.093 に答える
2

つまり、これを使用すると、そのパラメーターがメソッドで変更されないことをリーダーとコンパイラーに通知します。

便利なリンク:

于 2012-05-05T01:57:37.500 に答える
1

oメソッドでに割り当てることはできません。

このローカル変数にアクセスするリスナーや実行可能なクラスなどの内部クラスがある場合に非常に便利です。

于 2012-05-05T01:56:21.027 に答える
0

正直なところ、メソッドパラメーターでfinalを使用する意味はあまりわかりません。finalは、変数が別のオブジェクトを指さないことを保証するだけであり、オブジェクト自体が不変ではないことを保証します...オブジェクトoの状態を変更できますが、Bのような別のオブジェクトにoを割り当てることはできません。

o = new Object();

また

Object b = new Object();
o=b;

しかし、呼び出す

o.doSomething();

大丈夫です。では、なぜどこでも醜い最終キーワードでコードを乱雑にするのですか?

パフォーマンスの最適化に関しては、最近のコンパイラーは、メソッドパラメーターにfinalキーワードがなくても、コードを分析して最適化すると思います。私はその点について100%確信が持てないので、誰かがこれについて私を訂正する気になりますか?

于 2012-05-05T02:47:10.990 に答える