この例では、宣言はどのような価値をObject final
提供しますか?
private void doSomethingClever(final Object o) {
}
これにより、他の誰かがあなたのコードにアクセスして、パラメーターを変更できないことを知ることができます。値を設定すると、コンパイラエラーが発生します。
つまり、これを使用すると、そのパラメーターがメソッドで変更されないことをリーダーとコンパイラーに通知します。
便利なリンク:
o
メソッドでに割り当てることはできません。
このローカル変数にアクセスするリスナーや実行可能なクラスなどの内部クラスがある場合に非常に便利です。
正直なところ、メソッドパラメーターでfinalを使用する意味はあまりわかりません。finalは、変数が別のオブジェクトを指さないことを保証するだけであり、オブジェクト自体が不変ではないことを保証します...オブジェクトoの状態を変更できますが、Bのような別のオブジェクトにoを割り当てることはできません。
o = new Object();
また
Object b = new Object();
o=b;
しかし、呼び出す
o.doSomething();
大丈夫です。では、なぜどこでも醜い最終キーワードでコードを乱雑にするのですか?
パフォーマンスの最適化に関しては、最近のコンパイラーは、メソッドパラメーターにfinalキーワードがなくても、コードを分析して最適化すると思います。私はその点について100%確信が持てないので、誰かがこれについて私を訂正する気になりますか?