1. ホーム
  2. java

[解決済み] メソッドパラメータの最終キーワード [重複]。

2022-04-24 09:51:45

質問

というようなメソッドによく出会います。

public void foo(final String a, final int[] b, final Object1 c){
}

このメソッドが final パラメータを渡さずに呼び出された場合はどうなりますか。つまり、後で変更される (final と宣言されていない) Object1 は、このメソッドに問題なく渡すことができます。

解決方法は?

Javaはメソッドにパラメータを送信する前に、常にパラメータのコピーを作成します。これは、finalが呼び出し側のコードにとって何の違いもないことを意味します。これは、メソッドの内部で変数を再代入できないことを意味するだけです。

finalオブジェクトがあっても、オブジェクトの属性を変更することは可能であることに注意してください。これは、Javaのオブジェクトは、実際にはオブジェクトへのポインタであるためです。そして、実際のオブジェクトではなく、ポインタだけがコピーされます(そして、あなたのメソッドではfinalとなります)。