Rumah >pembangunan bahagian belakang >C++ >Adakah Java Lulus Parameter mengikut Rujukan atau Nilai, dan Bagaimana Anda Boleh Mencapai Tingkah Laku Seperti Rujukan?
Melalui Parameter melalui Rujukan dalam Java: Penjelasan
Bertentangan dengan kepercayaan popular, Java tidak menyokong parameter lulus melalui rujukan dengan cara yang sama sebagai kata kunci ref C#. Walau bagaimanapun, persepsi ini berpunca daripada fakta bahawa untuk parameter jenis rujukan, rujukan itu sendiri diluluskan mengikut nilai.
Di Java, semua parameter diluluskan mengikut nilai. Apabila parameter jenis rujukan dihantar kepada kaedah, salinan rujukan dibuat. Ini bermakna perubahan yang dibuat pada rujukan dalam kaedah tidak menjejaskan rujukan di luar kaedah.
Untuk menggambarkan ini, pertimbangkan contoh berikut:
Object o = "Hello"; mutate(o); System.out.println(o); //Hello private void mutate(Object o) { o = "Goodbye"; }
Kod di atas akan mencetak " Hello" kepada konsol. Ini menunjukkan bahawa rujukan o di dalam kaedah mutate tidak sama dengan rujukan di luar kaedah.
Jika anda ingin mengubah suai rujukan itu sendiri, anda mesti gunakan parameter jenis rujukan eksplisit, seperti 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"); }
Dalam kes ini, parameter ref diluluskan melalui rujukan dan nilai rujukan diubah suai dalam kaedah mutasi. Akibatnya, kod akan mencetak "Selamat tinggal!" ke konsol.
Atas ialah kandungan terperinci Adakah Java Lulus Parameter mengikut Rujukan atau Nilai, dan Bagaimana Anda Boleh Mencapai Tingkah Laku Seperti Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!