Rumah > Java > javaTutorial > teks badan

Bagaimanakah Sekatan Akhirnya Mempengaruhi Nilai Pulangan Kaedah di Jawa?

Linda Hamilton
Lepaskan: 2024-11-09 15:15:02
asal
337 orang telah melayarinya

How Does a Finally Block Affect the Return Value of a Method in Java?

Kesan Blok Akhirnya terhadap Nilai Pulangan

Di Jawa, tingkah laku blok akhirnya pada nilai pulangan kaedah boleh berlawanan dengan intuitif . Mari kita menganalisis coretan kod dan menyelidiki sebab asas fenomena ini.

Pertimbangkan kod berikut:

public class Test {

    private String s;

    public String foo() {
        try {
            s = "dev";
            return s;
        } finally {
            s = "override variable s";
            System.out.println("Entry in finally Block");
        }
    }

    public static void main(String[] xyz) {
        Test obj = new Test();
        System.out.println(obj.foo());
    }
}
Salin selepas log masuk

Apabila dilaksanakan, kod mencetak "Entry in finally Block" tetapi mengembalikan " dev." Ini kerana nilai pulangan ditentukan oleh pelaksanaan pernyataan pulangan dalam blok cuba. Perubahan yang dibuat kepada 's' dalam blok akhirnya berlaku selepas blok cuba selesai dan oleh itu tidak ditunjukkan dalam nilai pulangan.

Adalah penting untuk ambil perhatian bahawa ini terpakai kepada perubahan dalam nilai 's' itu sendiri, bukan kepada perubahan dalam rujukan objek. Jika 's' merujuk kepada objek boleh ubah dan kandungannya ditukar dalam blok akhirnya, perubahan tersebut akan kelihatan dalam nilai pulangan.

Spesifikasi Bahasa Java (JLS) menggariskan peraturan terperinci untuk ini tingkah laku dalam Seksyen 14.20.2. Dalam kes pernyataan cuba-akhir, jika kedua-dua blok cuba dan blok akhirnya mempunyai pernyataan pulangan, nilai pulangan blok akhirnya akan diguna pakai. Ini kerana pelaksanaan penyata pulangan dianggap sebagai penamatan blok secara tiba-tiba.

Untuk meringkaskan, nilai pulangan kaedah ditentukan oleh penyataan pulangan dalam blok cuba. Perubahan yang dibuat kepada pembolehubah dalam blok akhirnya, sama ada dalam nilai atau melalui pengubahsuaian objek, tidak menjejaskan nilai pulangan melainkan blok akhirnya juga termasuk pernyataan pulangan.

Atas ialah kandungan terperinci Bagaimanakah Sekatan Akhirnya Mempengaruhi Nilai Pulangan Kaedah di Jawa?. 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