Rumah > pembangunan bahagian belakang > C++ > Adakah Java Menyokong Pass-by-Reference, dan Jika Tidak, Bagaimana Ia Boleh Disimulasikan?

Adakah Java Menyokong Pass-by-Reference, dan Jika Tidak, Bagaimana Ia Boleh Disimulasikan?

Barbara Streisand
Lepaskan: 2024-12-29 15:17:11
asal
658 orang telah melayarinya

Does Java Support Pass-by-Reference, and If Not, How Can It Be Simulated?

Melalui Parameter melalui Rujukan dalam Java: Adakah Mungkin?

Walaupun Java tidak mempunyai kata kunci rujukan eksplisit seperti C#, adalah penting untuk memahami bahawa parameter sentiasa diluluskan oleh nilai. Walau bagaimanapun, apabila melepasi parameter jenis rujukan (cth., objek), rujukan kepada objek itu sendiri dihantar, meniru gelagat rujukan lalu-selalu dengan berkesan.

Lalu-lalu -Nilai lwn. Rujukan Laluan Jelas:

Pertimbangkan perkara berikut kod:

Object o = "Hello";
mutate(o);
System.out.println(o);

private void mutate(Object o) { o = "Goodbye"; }
Salin selepas log masuk

Kod ini akan mencetak "Hello" pada konsol, menunjukkan bahawa nilai rujukan objek kekal tidak berubah. Ini kerana Java menghantar jenis primitif dan rujukan kepada objek mengikut nilai.

Mencapai Semantik Pass-by-Reference:

Untuk benar-benar lulus objek melalui rujukan, membenarkan pengubahsuaian dalam kaedah yang akan ditunjukkan dalam kod panggilan, anda perlu menggunakan rujukan eksplisit, seperti yang ditunjukkan di bawah:

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); // Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
Salin selepas log masuk

Kod ini akan mencetak "Selamat tinggal" ke konsol, menunjukkan bahawa rujukan itu sendiri telah diubah suai dan perubahan telah disebarkan kembali kepada kod panggilan.

Kesimpulan :

Java sememangnya tidak menyokong rujukan lulus untuk parameter. Walau bagaimanapun, dengan menggunakan rujukan dan binaan eksplisit seperti AtomicReference, anda boleh mencapai semantik yang serupa dan mengubah suai objek asas dengan rujukan, meniru tingkah laku lulus demi rujukan dengan berkesan.

Atas ialah kandungan terperinci Adakah Java Menyokong Pass-by-Reference, dan Jika Tidak, Bagaimana Ia Boleh Disimulasikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan