1. ホーム
  2. java

[解決済み] Javaでメソッドのパラメータをfinalと宣言するのはパフォーマンス的に問題がありますか?

2022-05-15 18:46:17

質問

Javaでメソッドのパラメータをfinalと宣言するパフォーマンス上の理由はありますか?

というように。

public void foo(int bar) { ... }

バーサス

public void foo(final int bar) { ... }

と仮定すると bar は読み込まれるだけで、決して変更されないと仮定すると foo() .

どのように解決するのですか?

final キーワードはローカル変数およびパラメータのクラスファイルには表示されないため、実行時のパフォーマンスに影響を与えることはありません。 唯一の用途は、変数が変更されないようにするコーダーの意図を明確にすること (多くの人がその使用に対する疑わしい理由を考える) と、匿名の内部クラスを処理することです。

メソッドは、修飾子に関係なく、実行時に最適化コンパイラーによってインライン化されるため、メソッド自体の final 修飾子にパフォーマンスの向上があるかどうかについては多くの議論があります。 この場合、それはメソッドのオーバーライドを制限するためにのみ使用されるべきです。