Rumah >Java >javaTutorial >Apakah tiga kaedah refleksi java

Apakah tiga kaedah refleksi java

小老鼠
小老鼠asal
2024-01-02 16:58:20666semak imbas

Tiga kaedah refleksi Java: 1. Dapatkan objek Kelas 2. Dapatkan pembina, medan dan kaedah kelas 3. Panggil kaedah dan akses medan melalui refleksi. Pengenalan terperinci: 1. Dapatkan objek Kelas: Anda boleh mendapatkan objek Kelas melalui salah satu daripada tiga kaedah: pemerolehan objek, pemerolehan nama kelas, dan pemerolehan nama kelas yang layak sepenuhnya, untuk mendapatkan maklumat tentang kelas; kaedah pembina kelas , Medan dan kaedah: Melalui objek Kelas, anda boleh mendapatkan pembina, medan dan kaedah kelas 3. Kaedah panggilan dan akses medan melalui refleksi, dsb.

Apakah tiga kaedah refleksi java

Sistem pengendalian tutorial ini: sistem Windows 10, komputer Dell G3.

Di Java, refleksi ialah mekanisme berkuasa yang membolehkan mendapatkan maklumat kelas, memanggil kaedah kelas, mengakses medan kelas, dsb. pada masa jalan. Refleksi menyediakan tiga kaedah utama untuk melaksanakan operasi ini:

1. Dapatkan objek Kelas: Anda boleh menggunakan salah satu daripada tiga kaedah berikut untuk mendapatkan objek Kelas untuk mendapatkan maklumat tentang kelas.

Melalui objek: Gunakan kaedah getClass() objek.

MyClass obj = new MyClass();
Class<?> myClass = obj.getClass();

Diperolehi mengikut nama kelas: Gunakan atribut kelas bagi nama kelas.

Class<?> myClass = MyClass.class;

Diperolehi melalui nama kelas yang layak sepenuhnya: gunakan kaedah Class.forName().

Class<?> myClass = Class.forName("com.example.MyClass");

2 Dapatkan pembina, medan dan kaedah kelas: Melalui objek Kelas, anda boleh mendapatkan pembina, medan dan kaedah kelas.

Dapatkan pembina:

Constructor<?>[] constructors = myClass.getConstructors();

Dapatkan medan:

Field[] fields = myClass.getDeclaredFields();

Dapatkan kaedah:

Method[] methods = myClass.getMethods();

anda melalui objek dan pantulan medan.3 boleh memanggil kaedah kelas dan mengakses nilai medan.

Kaedah panggilan:

Method myMethod = myClass.getMethod("methodName", parameterTypes);
myMethod.invoke(objectInstance, args);

Medan akses:

Field myField = myClass.getDeclaredField("fieldName");
myField.setAccessible(true); // 如果字段是私有的,需要设置为可访问
Object fieldValue = myField.get(objectInstance);

Tiga kaedah akses pada masa ini, fleksibiliti untuk mendapatkan maklumat kelas. Walau bagaimanapun, maklum bahawa operasi pantulan mungkin dikenakan overhed prestasi dan memerlukan pengendalian pengecualian apabila menggunakannya.

Atas ialah kandungan terperinci Apakah tiga kaedah refleksi java. 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