Java での参照によるパラメータの受け渡し: 可能ですか?
Java には C# のような明示的な ref キーワードがありませんが、次のことが重要です。パラメーターは常に値によって渡されることを理解してください。ただし、参照型 パラメーター (オブジェクトなど) を渡す場合、オブジェクト自体への参照が渡され、参照渡しの動作を効果的に模倣します。
Pass-by -値と見かけの参照渡し:
次の点を考慮してください。 code:
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; }
このコードは、コンソールに「Hello」を出力し、オブジェクトの参照値が変更されないことを示します。これは、Java がプリミティブ型と参照を値によってオブジェクトに渡すためです。
参照渡しセマンティクスの実現:
オブジェクトを参照によって真に渡し、変更を許可するには呼び出しコードに反映されるメソッド内では、示されているように、明示的な参照を使用する必要があります。以下:
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); // Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
このコードはコンソールに「Goodbye」を出力し、参照自体が変更され、その変更が呼び出し元のコードに反映されたことを示します。
結論:
Java は本質的にパラメータの参照渡しをサポートしていません。ただし、明示的な参照と AtomicReference のような構造を使用すると、同様のセマンティクスを実現し、基になるオブジェクトを参照によって変更して、参照渡しの動作を効果的に模倣できます。
以上がJava は参照渡しをサポートしていますか?サポートしていない場合、どのようにシミュレートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。