Rumah > Java > javaTutorial > Cara menggunakan fungsi Reflection dalam Java untuk operasi refleksi

Cara menggunakan fungsi Reflection dalam Java untuk operasi refleksi

PHPz
Lepaskan: 2023-06-26 16:37:40
asal
1227 orang telah melayarinya

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:

  1. Gunakan kaedah Class.forName() untuk mendapatkan

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");
Salin selepas log masuk
  1. Gunakan secara langsung nama kelas.kata kunci kelas untuk mendapatkan

Kita juga boleh terus menggunakan nama kelas.kata kunci kelas untuk mendapatkan objek Kelas bagi kelas, sebagai contoh:

Class clazz = String.class;
Salin selepas log masuk
  1. Dapatkannya melalui kaedah getClass() objek

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();
Salin selepas log masuk

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:

  1. Dapatkan semua pembina kelas
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors) {
    System.out.println(constructor);
}
Salin selepas log masuk
  1. Dapatkan semua kaedah kelas
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
    System.out.println(method);
}
Salin selepas log masuk
  1. Dapatkan semua atribut
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
    System.out.println(field);
}
Salin selepas log masuk

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:

  1. Mencipta objek menggunakan pantulan

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!");
Salin selepas log masuk
  1. Menggunakan pantulan untuk memanggil kaedah kelas

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);
Salin selepas log masuk
  1. Gunakan refleksi untuk membaca dan mengubah suai atribut kelas

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!
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan