この例では、Object final
とはどのような値を示していますか?マーキング方法パラメータの最終値
private void doSomethingClever(final Object o) {
}
この例では、Object final
とはどのような値を示していますか?マーキング方法パラメータの最終値
private void doSomethingClever(final Object o) {
}
つまり、それは読者とコンパイラに、その方法では パラメータが変更されないことを伝えます。
役立つリンク:
これは、あなたのコードを訪れて他の誰かがパラメータを知ることができますが、変更することはできません。値を設定すると、コンパイルエラーが発生します。
この方法ではo
に割り当てることはできません。
これは、このローカル変数にアクセスするリスナーや一部の実行可能ファイルなどの内部クラスを持つ場合に非常に便利です。
は、私は本当にメソッドのパラメータには、最終的な使用のポイントが表示されていない正直に言うと。 finalは変数が別のオブジェクトを指していないことを保証するだけで、オブジェクト自体は不変ではありません...オブジェクトoの状態を変更することができ、Bを別のオブジェクトに割り当てることはできません
o = new Object();
または
Object b = new Object();
o=b;
しかし
o.doSomething();
を呼び出すだけで結構です。だからなぜどこでも醜い最終的なキーワードでコードを混乱させる?
パフォーマンスの最適化については、現代のコンパイラはメソッドパラメータの最後のキーワードがなくてもコードを分析して最適化すると考えています。私が100%その点について確信しているわけではないので、誰もがこれについて私を修正する気になります!
ありがとうございました。良いリファレンス – JAM