cari
RumahJavajavaTutorialRefleksi dalam JAVA

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());
}
}</test></boolean>

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
Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Apr 28, 2025 am 12:23 AM

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Apr 28, 2025 am 12:14 AM

Kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian, kerana falsafah "Write Once, Run, Everywhere" Java dilaksanakan oleh Java Virtual Machine (JVM). Oleh kerana perantara antara bytecode Java yang disusun dan sistem operasi, JVM menerjemahkan bytecode ke dalam arahan mesin tertentu untuk memastikan program itu dapat dijalankan secara bebas di mana -mana platform dengan JVM dipasang.

Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Apr 28, 2025 am 12:08 AM

Penyusunan dan pelaksanaan program Java mencapai kemerdekaan platform melalui Bytecode dan JVM. 1) Tulis kod sumber Java dan menyusunnya ke dalam bytecode. 2) Gunakan JVM untuk melaksanakan bytecode pada mana -mana platform untuk memastikan kod berjalan di seluruh platform.

Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Apr 28, 2025 am 12:05 AM

Prestasi Java berkait rapat dengan seni bina perkakasan, dan memahami hubungan ini dapat meningkatkan keupayaan pengaturcaraan dengan ketara. 1) JVM menukarkan bytecode Java ke dalam arahan mesin melalui kompilasi JIT, yang dipengaruhi oleh seni bina CPU. 2) Pengurusan memori dan koleksi sampah dipengaruhi oleh RAM dan kelajuan bas memori. 3) Ramalan cache dan cawangan mengoptimumkan pelaksanaan kod Java. 4) Pemprosesan pelbagai threading dan selari meningkatkan prestasi pada sistem multi-teras.

Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Apr 28, 2025 am 12:02 AM

Menggunakan perpustakaan asli akan memusnahkan kemerdekaan platform Java, kerana perpustakaan ini perlu dikumpulkan secara berasingan untuk setiap sistem operasi. 1) Perpustakaan asli berinteraksi dengan Java melalui JNI, menyediakan fungsi yang tidak dapat dilaksanakan secara langsung oleh Java. 2) Menggunakan perpustakaan asli meningkatkan kerumitan projek dan memerlukan menguruskan fail perpustakaan untuk platform yang berbeza. 3) Walaupun perpustakaan asli dapat meningkatkan prestasi, mereka harus digunakan dengan berhati-hati dan menjalankan ujian silang platform.

Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Apr 27, 2025 am 12:18 AM

JVM Mengendalikan Perbezaan API Sistem Operasi melalui JavanativeInterface (JNI) dan Perpustakaan Standard Java: 1. JNI membenarkan kod Java untuk memanggil kod tempatan dan terus berinteraksi dengan API Sistem Operasi. 2. Perpustakaan Standard Java menyediakan API bersatu, yang dipetakan secara dalaman kepada API sistem operasi yang berbeza untuk memastikan kod tersebut berjalan di seluruh platform.

Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectjava'splatformindected.java'splatformindectenceismaintybythejvm, butmodularityinfluencesapplicationstructureandManagement, indirectlyimpactingplatformindect.1) DeploymentandmentandmentweMbecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecom

Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apr 27, 2025 am 12:06 AM

BytecodeinjavaistheintermediaterepresentationThateNableSplatformindant.1) javacodeiscompiledintobytecodestoredin.classfiles.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod