Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengakses Kelas Luar daripada Kelas Dalam di Jawa?

Bagaimanakah Saya Boleh Mengakses Kelas Luar daripada Kelas Dalam di Jawa?

Barbara Streisand
Barbara Streisandasal
2024-12-14 11:17:11698semak imbas

How Can I Access the Outer Class from an Inner Class in Java?

Merujuk Kelas Luar daripada Kelas Dalam

Dalam coretan kod yang disediakan, anda mempunyai kelas bersarang OuterClass dan InnerClass. Anda menyasarkan untuk mengakses kelas induk (OuterClass) daripada contoh kelas dalam (InnerClass) tanpa mengubah suai kod kelas dalam.

Menggunakan OuterClass.this

Dalam InnerClass, anda boleh menggunakan ungkapan OuterClass.ini untuk merujuk kepada contoh lampiran OuterClass. Ungkapan ini melayakkan kata kunci ini untuk menunjukkan contoh yang disertakan. Berikut ialah versi kod anda yang diubah suai:

public class OuterClass {

    public class InnerClass {
        private String name = "Peakit";
        
        public OuterClass outer() {
            return OuterClass.this;
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        InnerClass inner = outer.new InnerClass();
        
        OuterClass anotherOuter = inner.outer();

        if(anotherOuter == outer) {
             System.out.println("Was able to reach out to the outer object via inner !!");
        } else {
             System.out.println("No luck :-( ");
        }
    }
}

Apabila anda menjalankan kod ini, kaedah outer() dalam InnerClass mengembalikan contoh lampiran OuterClass, yang kemudiannya boleh anda bandingkan dengan contoh OuterClass yang asal.

Akses Tahap Pakej (Tidak Disyorkan)

Melalui percubaan, didapati bahawa medan yang memegang rujukan kepada kelas luar mempunyai akses peringkat pakej. Ini bermakna anda boleh mengakses kelas luar secara teknikal melalui refleksi:

Field field = InnerClass.class.getDeclaredField("this");
field.setAccessible(true);
OuterClass outer = (OuterClass) field.get(inner);

Nota: Pendekatan ini tidak digalakkan oleh Spesifikasi Bahasa Java dan mungkin tidak boleh dipercayai merentas versi Java yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kelas Luar daripada Kelas Dalam di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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