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.
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.
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!