Rumah  >  Artikel  >  Java  >  Refleksi dalam JAVA

Refleksi dalam JAVA

WBOY
WBOYasal
2024-08-30 15:57:54856semak imbas

Refleksi, seperti namanya, ialah kefungsian API(Antaramuka pengaturcaraan aplikasi) dalam JAVA yang melaluinya contoh masa jalan kelas boleh diperiksa sepenuhnya. Ia adalah sebahagian daripada pakej Java.lang.reflect. Pakej ini perlu diimport pada permulaan program, dan kemudian fungsi digunakan untuk memahami fungsi "refleksi." Mana-mana tingkah laku kelas boleh dikaji; metadata boleh diekstrak atau diubah suai menggunakan API refleksi dalam masa jalan.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks

Sintaks fungsi biasa di bawah API refleksi untuk mengekstrak maklumat kelas disediakan di bawah:

  • public String getName( parameter ): Fungsi ini mengembalikan nama kelas.
  • public boolean isInterface( parameter ): Fungsi ini menyemak sama ada kelas ialah antara muka atau tidak dan mengembalikan nilai boolean (true atau false).
  • public boolean isArray( parameter ): Fungsi ini menyemak sama ada pembolehubah ialah tatasusunan atau bukan dan mengembalikan nilai boolean (true atau false).
  • public Constructor[] getDeclaredConstructors( parameter ) membuang SecurityException: Fungsi ini menyemak pembina dalam kelas dan mengembalikan bilangan pembina yang digunakan dalam kelas tertentu. Selain itu, ia mempunyai pengecualian keselamatan dan tangkapan yang dikaitkan dengan menjadikan program ini berfungsi tanpa gangguan.
  • Kaedah awam[] getDeclaredMethods( parameter ) membuang SecurityException: Fungsi ini menyemak kaedah dalam kelas dan mengembalikan bilangan kaedah yang digunakan dalam kelas tertentu. Selain itu, ia mempunyai pengecualian keselamatan dan tangkapan yang dikaitkan untuk menjadikan program ini berfungsi tanpa gangguan.
  • Kelas awam getSuperclass( parameter ): Fungsi ini mengembalikan superclass kelas asas.
  • boolean awam adalah primitif( parameter ): Fungsi ini menyemak sama ada parameter yang diberikan adalah primitif atau tidak dan mengembalikan nilai boolean.

Bagaimana Refleksi berfungsi dalam JAVA?

Kelas refleksi menggunakan kaedah berbeza yang ditakrifkan dalam pakej Java.lang.reflect untuk mengekstrak maklumat kelas. Maklumat tentang kelas boleh diekstrak menggunakan kaedah getClass(), Pembina menggunakan kaedah getConstructors() dan kaedah menggunakan kaedah getMethods(). Kaedah ini ditakrifkan dalam API refleksi tetapi mengembalikan maklumat kelas, termasuk kaedah, pembina dan banyak lagi. Reflection API digunakan dalam program JAVA, IDE (Persekitaran pembangunan bersepadu) seperti eclipse, Netbeans. Ini boleh difahami dengan baik dengan bantuan contoh yang disediakan dalam bahagian di bawah.

Contoh Refleksi dalam JAVA

Contoh yang berbeza dinyatakan di bawah:

Contoh #1

Kod:

//package test;
import java.lang.Class;
public class test{
public static void main(String args[]){
Class<Boolean> c1 = boolean.class;
System.out.println("Here, the class name is: "+c1.getName());
Class<test> c2 = test.class;
System.out.println("This is another instance of class is used to derive class name : "+c2.getName());
}
}

Output:

Refleksi dalam JAVA

Penjelasan: Sila semak contoh yang disediakan di atas. Ini mempunyai pakej yang mengandungi semua kelas bernama "ujian." Pakej ujian mempunyai kelas "ujian diisytiharkan." Kelas ini juga mengandungi kaedah utama dari mana pelaksanaan program akan bermula. Kelas “Kelas ialah kelas refleksi pengecam dalam jAVA. Kelas ini didayakan dengan bantuan perpustakaan yang diisytiharkan di atas "java.lang.Class". Boolean sendiri adalah kelas dalam JAVA. Boolean ialah jenis data primitif seperti rentetan, int atau char. Contoh ini menunjukkan bahawa kita boleh mengekstrak maklumat jenis data primitif (yang akhirnya ialah kelas dalam JAVA, dan itulah sebabnya JAVA dipanggil bahasa berorientasikan objek tulen". Fungsi " getName() " digunakan untuk mendapatkan nama daripada kelas yang dinyatakan di sini oleh objek bernama "C1".

Dalam baris seterusnya, daripada menggunakan jenis data primitif, "kelas" jenis data yang ditentukan pengguna bernama "ujian" diambil kira untuk mengekstrak data. “Kelas” ialah kelas pantulan yang dijadikan instantiated dengan objek bernama "C2". Di sini nama kelas diuji, dan objek digunakan untuk mengeluarkan nama kelas ini menggunakan fungsi "getName()." Output akhir mengandungi nilai yang dikembalikan bagi fungsi ini dan dipaparkan pada skrin output.

Contoh #2

Kod:

//package test;
import java.lang.Class;
class Simple{}
public class test{
public static void main(String args[]){
try{
Class<?> c=Class.<em>forName</em>("Simple");
System.<em>out</em>.println("The result is: "+c.isInterface());
}catch(Exception e){System.<em>out</em>.println(e);}
}
}

Output:

Refleksi dalam JAVA

Penjelasan: Dalam contoh di atas, satu pakej dicipta bernama" ujian," seperti yang dibuat dalam contoh nombor 1 sebelumnya. Pakej ini mengandungi nama kelas "Mudah", yang bukan kelas utama . Kelas utama di sini ialah kelas "ujian" yang mengandungi kaedah utama dari mana pelaksanaan program akan bermula. “Kelas ” ialah pengecam kelas pantulan yang diwujudkan melalui objek bernama "c" di sini. Kemudian objek ini digunakan untuk mengeluarkan penunjuk keputusan (Benar atau salah) bagi fungsi yang dinamakan "isInaterface." Fungsi ini menarik dalam kelas sebagai parameter; dalam kes ini, kelas yang ditarik masuk sebagai parameter ialah kelas "Mudah". Kelas ini bukan antara muka, jadi "palsu" dikembalikan sebagai hasil dalam skrin output. Untuk menggunakan fungsi ini, objek kelas “c” telah digunakan.

Kelebihan

Beberapa kelebihan menggunakan refleksi dalam JAVA disenaraikan di bawah:

  1. Ini adalah salah satu cara terbaik untuk mengekstrak maklumat untuk mana-mana kelas. Maklumat ini boleh terdiri daripada maklumat daripada pembina kepada kelas dan kaedah.
  2. Salah satu kelebihan terbesar fungsi ini ialah kami juga boleh mengekstrak maklumat tentang kaedah dan kelas peribadi. Jadi apa-apa sahaja, jika disembunyikan dalam program dengan niat buruk, boleh diekstrak menggunakan fungsi ini.
  3. Fungsi ini memberikan banyak fleksibiliti kepada penyahpepijat kerana mereka boleh nyahpepijat kelas dengan mudah dan bukannya pergi ke setiap kelas secara berasingan.
  4. Ini juga menambah sebagai ciri kebolehlanjutan di mana seseorang boleh menambah kelas tersuai luaran dengan menggunakan contoh.
  5. Ini memberikan manifestasi kuasa sebenar bahasa OOP dengan bantuan contoh.
  6. Ini digunakan dalam pemuatan dinamik dan pemuatan semula kelas semasa program dijalankan.

Kesimpulan

Refleksi JAVA memungkinkan untuk mengintrospeksi kelas, antara muka, kaedah dan banyak lagi tanpa mengetahui nama kelas sama sekali. Ini semua dilakukan semasa masa penyusunan. Ini dianggap sebagai salah satu sifat JAVA yang paling berkuasa kerana ini boleh digunakan untuk mencipta contoh kelas, dan ahli persendirian kelas boleh diekstrak menggunakan ini. Pembangun boleh menggunakan ini semasa masa jalan dan untuk pemetaan objek pangkalan data juga.

Atas ialah kandungan terperinci Refleksi dalam 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
Artikel sebelumnya:Kelas Grafik di JawaArtikel seterusnya:Kelas Grafik di Jawa