1. Proses memanggil refleksi
(1) Fasa persediaan : Muatkan semua kelas semasa penyusunan dan simpan meta-maklumat setiap kelas ke Class In objek kelas, setiap kelas sepadan dengan objek Kelas
(2) Dapatkan objek Kelas : panggil x.class/x.getClass()/Class.forName() untuk mendapatkan Kelas x Objek clz (lapisan bawah kaedah ini adalah semua kaedah asli, yang ditulis di bahagian bawah JVM. Kami tidak akan meneroka lapisan bawah JVM buat masa ini)
(3) Lakukan operasi refleksi sebenar: Dapatkan objek Medan/Kaedah/Pembina melalui objek clz untuk operasi selanjutnya
2 Dapatkan kelas kelas
Kepada dapatkan maklumat kelas melalui refleksi, anda mesti terlebih dahulu Dapatkan contoh kelas Kelas yang sepadan dengan kelas Contoh kelas Kelas mewakili kelas dan antara muka aplikasi Java yang sedang berjalan. Kelas Kelas tidak mempunyai pembina awam Objek kelas Kelas berada dalam aliran bait binari (biasanya fail .class, yang juga boleh diperoleh melalui rangkaian atau pakej zip) dengan memanggil defineClass pemuat kelas apabila ia dimuatkan oleh kaedah JVM () untuk dibina.
/** * Instances of the class {@code Class} represent classes and * interfaces in a running Java application. * {@code Class} has no public constructor. Instead {@code Class} * objects are constructed automatically by the Java Virtual Machine as classes * are loaded and by calls to the {@code defineClass} method in the class * loader. */ public final class Class<T> implements java.io.Serializable,GenericDeclaration,Type,AnnotatedElement { ...... }
Atas ialah kandungan terperinci Apakah prinsip dan fungsi refleksi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!