Fungsi Refleksi dalam Java ialah teknologi pengaturcaraan lanjutan yang boleh mendapatkan maklumat kelas dan mengubah suainya secara dinamik semasa masa jalan. Fungsi refleksi membolehkan kita menggunakan objeknya dan sifat serta kaedah kelas yang dimilikinya tanpa mengetahui maklumat lengkap tentang kelas tersebut. Dalam artikel ini, kita akan belajar cara melakukan operasi pantulan menggunakan fungsi Refleksi dalam Java.
1. Konsep asas mekanisme pantulan
Mekanisme pantulan merujuk kepada mekanisme yang secara dinamik mendapatkan maklumat fail kelas (fail kelas) semasa proses pengaturcaraan. Ia membenarkan mengendalikan maklumat fail kelas ini pada masa jalan, termasuk kaedah kelas membaca, sifat, pembina, kaedah mendapatkan dan memanggil, dsb.
Secara umum, mekanisme pantulan ialah bahasa pengaturcaraan Java yang menentukan jenis objek semasa runtime, membolehkan kami menyemak kelas yang dimiliki objek semasa runtime dan menganalisis ciri dan kelakuannya.
Kelebihan utama mekanisme refleksi ialah ia boleh melaksanakan kod generik yang boleh digunakan untuk semua kelas Java tanpa mengetahui maklumat lengkap tentang kelas sebenar. Ini membolehkan pengaturcara mencipta, menghuraikan dan menggunakan objek, sifat dan kaedah dalam kelas melalui refleksi.
2. Dapatkan objek Kelas
Langkah pertama refleksi ialah mendapatkan objek Kelas kelas, yang boleh dicapai dalam tiga cara berikut:
Ini menggunakan mekanisme pantulan Kaedah yang paling biasa. Kita boleh menggunakan kaedah Class.forName() sebagai refleksi untuk mendapatkan objek Kelas bagi kelas tersebut. Kaedah ini perlu lulus dalam nama lengkap kelas, contohnya:
Class clazz = Class.forName("java.lang.String");
Kita juga boleh terus menggunakan nama kelas.kata kunci kelas untuk mendapatkan objek Kelas bagi kelas, sebagai contoh:
Class clazz = String.class;
Kita boleh menggunakan kaedah getClass() objek untuk mendapatkan objek Kelas bagi kelas yang objek itu dimiliki, untuk contoh:
String str = "Hello, World!"; Class clazz = str.getClass();
3 Dapatkan maklumat kelas
Dapatkan kelas Maklumat ialah operasi paling asas dalam refleksi, yang membolehkan kami mendapatkan kaedah, sifat, pembina dan maklumat lain kelas pada masa jalan, dan memanggil dan mengubah suai. ia.
Kita boleh menggunakan kod berikut untuk mendapatkan maklumat kelas:
Constructor[] constructors = clazz.getDeclaredConstructors(); for (Constructor constructor : constructors) { System.out.println(constructor); }
Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { System.out.println(method); }
Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println(field); }
4. Kelas operasi Objek, kaedah dan sifat
Kita boleh menggunakan mekanisme pantulan untuk menggunakan objek, kaedah dan sifat sesuatu kelas. Berikut ialah contoh penggunaan pantulan untuk mengendalikan kaedah dan sifat berkaitan kelas:
Menggunakan pantulan untuk mencipta objek kelas secara dinamik, berikut ialah kod pelaksanaan:
Class clazz = Class.forName("java.lang.String"); Constructor constructor = clazz.getDeclaredConstructor(String.class); String str = (String) constructor.newInstance("Hello, World!");
Gunakan refleksi untuk memanggil kaedah kelas secara dinamik Berikut ialah kod pelaksanaan:
Class clazz = Class.forName("java.lang.String"); Method method = clazz.getDeclaredMethod("charAt", int.class); char c = (char) method.invoke("Hello, World!", 1);
Gunakan refleksi untuk membaca dan membaca secara dinamik. ubah suai atribut kelas. Berikut ialah kod pelaksanaan:
Class clazz = Class.forName("java.lang.String"); Field field = clazz.getDeclaredField("value"); field.setAccessible(true); //设置私有属性可读写 String str = "Hello, World!"; char[] chars = (char[]) field.get(str); chars[0] = 'h'; System.out.println(str); //输出: hello, World!
Ringkasan
Artikel ini memperkenalkan cara menggunakan fungsi Reflection dalam Java untuk operasi refleksi. Mekanisme refleksi ialah teknologi yang sangat penting dalam pengaturcaraan Java Ia membolehkan pengaturcara mendapatkan dan mengendalikan maklumat dan sifat kelas pada masa jalan, membolehkan pengaturcara mencipta, mengakses dan mengubah suai objek, kaedah dan sifat kelas secara dinamik. Selepas mempelajari mekanisme refleksi, kita boleh menulis aplikasi Java dengan lebih fleksibel dan menulis kod berskala dan serba boleh.
Atas ialah kandungan terperinci Cara menggunakan fungsi Reflection dalam Java untuk operasi refleksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!