私は興味を持ってこの質問を読みました: Javaで参照によってパラメーターを渡すことはできますか?
出てくるのは、パラメータ(プリミティブではない)が参照値をコピーすることによって渡されるということです。そして、例が示すように、指定したパラメータの参照を変更することはできません。
Object o = "Hello";
mutate(o)
System.out.println(o); // Will print Hello
private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!
final
この種の問題は、次のように使用することで回避できます。
private void mutate(final Object o) { o = "Goodbye"; } //Compilation error
質問 :
- このような場合のキーワードは
final
、コンパイルエラーをスローするためにのみ使用されますか? - 最終的に、指定されたパラメーターの参照を変更できない場合、
final
暗黙的または必須ではないのはなぜですか?
Javaでメソッドパラメータを使用することはめったにありませんが、メソッドパラメータfinal
を自発的に省略してしまうケースは考えられませんfinal
。
ありがとう!