Rumah > Java > javaTutorial > Cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java

Cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java

PHPz
Lepaskan: 2023-10-24 09:28:44
asal
926 orang telah melayarinya

Cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java

Cara menggunakan fungsi refleksi dalam Java untuk mencipta dan memanggil objek secara dinamik

Pengenalan:
Dalam pengaturcaraan Java, refleksi Ia adalah teknologi berkuasa yang membolehkan kami memperoleh dan memanipulasi maklumat kelas pada masa jalanan. Antaranya, penciptaan dinamik dan pemanggilan objek adalah salah satu daripada senario aplikasi refleksi yang penting. Artikel ini akan memperkenalkan cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java dan memberikan contoh kod khusus.

1. Gambaran keseluruhan refleksi:
Refleksi Java bermaksud program ini mengendalikan sifat dan kaedah yang berkaitan bagi kelas sasaran melalui API pantulan pada masa jalan. Sekiranya tiada refleksi, kita mesti mengetahui dengan jelas maklumat khusus kelas sasaran pada masa penyusunan untuk melaksanakan operasi yang sepadan. Dengan refleksi, kami boleh memperoleh dan memanipulasi maklumat kelas sasaran secara dinamik semasa masa jalan, meningkatkan fleksibiliti dan skalabiliti program.

2. Gunakan refleksi untuk mencipta objek:
Dalam Java, anda boleh mencipta objek menggunakan kaedah newInstance() kelas Kelas. Langkah-langkah khusus adalah seperti berikut:

  1. Mendapatkan objek Kelas bagi kelas sasaran boleh dicapai melalui kaedah Class.forName() atau memanggil terus atribut kelas kelas sasaran.

Kod sampel:

Class<?> clazz = Class.forName("com.example.Person");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Panggil kaedah newInstance() untuk mencipta objek.

Contoh kod:

Object obj = clazz.newInstance();
Salin selepas log masuk

Melalui kod di atas, kita boleh mencipta instance kelas Person secara dinamik tanpa mengetahui maklumat khusus kelas Person terlebih dahulu , menambah baik Meningkatkan fleksibiliti program.

3 Gunakan refleksi untuk memanggil kaedah objek secara dinamik:
Refleksi bukan sahaja boleh digunakan untuk mencipta objek, tetapi juga boleh digunakan untuk memanggil kaedah objek. Berikut ialah contoh menggunakan refleksi untuk memanggil kaedah:

  1. Dapatkan objek Kelas bagi kelas sasaran.

Kod sampel:

Class<?> clazz = Class.forName("com.example.Person");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Dapatkan objek Kaedah kaedah sasaran.

Kod sampel:

Method method = clazz.getMethod("setName", String.class);
Salin selepas log masuk
  1. Panggil kaedah invoke() bagi objek Kaedah dan masukkan objek dan parameter sasaran untuk memanggil secara dinamik kaedah sasaran.

Kod sampel:

Object obj = clazz.newInstance();
method.invoke(obj, "Tom");
Salin selepas log masuk

Melalui kod di atas, kita boleh memanggil kaedah setName kelas Person secara dinamik untuk menetapkan sifat objek, dan di sana tidak perlu Mengetahui maklumat khusus kelas Orang terlebih dahulu.

4 Gunakan refleksi untuk mendapatkan dan mengubah suai atribut objek:
Reflection juga boleh digunakan untuk mendapatkan dan mengubah suai nilai atribut objek. Berikut ialah contoh menggunakan refleksi untuk mendapatkan dan mengubah suai sifat:

  1. Dapatkan objek Kelas bagi kelas sasaran.

Kod sampel:

Class<?> clazz = Class.forName("com.example.Person");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Dapatkan objek medan atribut sasaran.

Contoh kod:

Field field = clazz.getDeclaredField("age");
Salin selepas log masuk
  1. Tetapkan medan untuk boleh diakses supaya nilainya boleh diperolehi dan diubah suai.

Kod sampel:

field.setAccessible(true);
Salin selepas log masuk
  1. Gunakan kaedah get() dan set() objek Medan untuk mendapatkan dan mengubah suai nilai atribut masing-masing.

Contoh kod:

Object obj = clazz.newInstance();
int age = (int) field.get(obj);
field.set(obj, age + 1);
Salin selepas log masuk

Melalui kod di atas, kita boleh memperoleh dan mengubah suai nilai atribut umur kelas Person secara dinamik, dan juga tidak perlu untuk mengetahui kelas Orang terlebih dahulu Maklumat khusus.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java. Melalui kod contoh di atas, pembaca boleh memahami penggunaan asas pantulan, dan menggunakan teknologi pantulan secara fleksibel dalam pembangunan projek sebenar untuk meningkatkan fleksibiliti dan skalabiliti program. Sudah tentu, refleksi harus digunakan secara sederhana, kerana terlalu banyak operasi refleksi mungkin mempunyai kesan tertentu terhadap prestasi program. Oleh itu, dalam pembangunan sebenar, kita perlu memilih secara munasabah sama ada untuk menggunakan teknologi refleksi mengikut senario tertentu.

Rujukan:

  • Dokumentasi rasmi Oracle: https://docs.oracle.com/en/java/javase/14/docs/api/java . base/java/lang/reflect/Method.html
  • Java Reflection (Zhihu): https://zhuanlan.zhihu.com/p/149535966

Atas ialah kandungan terperinci Cara menggunakan fungsi pantulan untuk mencipta dan memanggil objek secara dinamik dalam Java. 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