Java での参照によるパラメータの受け渡し: 明確化
一般的な考えに反して、Java は同じ方法でのパラメータの参照による受け渡しをサポートしていません。 C# の ref キーワードとして。ただし、この認識は、参照型パラメータの場合、参照自体が値によって渡されるという事実から生じています。
Java では、すべてのパラメータが値によって渡されます。参照型パラメータがメソッドに渡されると、参照のコピーが作成されます。これは、メソッド内で参照に加えられた変更は、メソッド外の参照には影響しないことを意味します。
これを説明するために、次の例を考えてみましょう。
Object o = "Hello"; mutate(o); System.out.println(o); //Hello private void mutate(Object o) { o = "Goodbye"; }
上記のコードは " を出力します。こんにちは」とコンソールに伝えます。これは、mutate メソッド内の参照 o がメソッドの外部の参照と同じではないことを示しています。
参照自体を変更したい場合は、次のようにする必要があります。 java.util.concurrent.atomic.AtomicReference
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); //Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
この場合、ref パラメーターは参照によって渡され、参照の値は mutate メソッド内で変更されます。その結果、コードは「Goodbye!」を出力します。コンソールへ。
以上がJava はパラメータを参照または値で渡しますか?また、参照のような動作を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。