Jadual Kandungan
Kaedah panggilan biasa dalam refleksi Java
Dapatkan objek Kelas
实例化对象
调用方法
获取和设置字段值
范型的应用
Rumah Java javaTutorial Contoh panggilan kaedah dalam refleksi Java

Contoh panggilan kaedah dalam refleksi Java

Dec 23, 2023 pm 01:54 PM
kaedah panggilan Contoh demonstrasi refleksi java

Contoh panggilan kaedah dalam refleksi Java

Kaedah panggilan biasa dalam refleksi Java

Dalam pengaturcaraan Java, refleksi adalah mekanisme yang boleh memeriksa, mendapatkan dan mengendalikan maklumat seperti kelas, antara muka, kaedah, medan dan sebagainya semasa program berjalan. Menggunakan refleksi, kami boleh memanggil kaedah secara dinamik, mencipta contoh, mendapatkan maklumat kelas, dsb. pada masa jalan, memberikan fleksibiliti dan skalabiliti yang lebih besar untuk reka bentuk program. Artikel ini akan menggunakan contoh kod khusus untuk menunjukkan kaedah panggilan biasa dalam refleksi Java untuk membantu pembaca memperoleh pemahaman yang mendalam tentang aplikasi refleksi.

Dapatkan objek Kelas

Sebelum menggunakan refleksi, anda perlu mendapatkan objek Kelas dari kelas yang sepadan terlebih dahulu. Anda boleh mendapatkan objek Kelas berdasarkan nama kelas yang layak sepenuhnya melalui kaedah Class.forName(), anda juga boleh mendapatkan objek Kelas melalui getClass()objek > kaedah, atau gunakannya terus Nama kelas .class untuk mendapatkannya. Class.forName()方法根据类的全限定名来获取Class对象,也可以通过对象的getClass()方法来获取Class对象,或者直接使用类名.class来获取。

// 通过Class.forName()获取Class对象
Class<?> clazz1 = Class.forName("com.example.MyClass");

// 通过对象的getClass()方法获取Class对象
MyClass obj = new MyClass();
Class<?> clazz2 = obj.getClass();

// 直接使用类名.class获取Class对象
Class<?> clazz3 = MyClass.class;

实例化对象

通过反射,可以动态创建一个类的对象。在获取到Class对象之后,可以使用newInstance()方法来创建实例。

Class<?> clazz = Class.forName("com.example.MyClass");
MyClass obj = (MyClass) clazz.newInstance();

调用方法

利用反射,可以动态调用类中的方法。假设有一个类MyClass,其中包含一个方法public void doSomething(String param),我们可以通过反射来调用该方法。

// 获取Method对象
Class<?> clazz = Class.forName("com.example.MyClass");
Method method = clazz.getMethod("doSomething", String.class);

// 创建对象
MyClass obj = (MyClass) clazz.newInstance();

// 调用方法
method.invoke(obj, "Hello, Reflection!");

获取和设置字段值

通过反射,可以获取和设置类中的字段的值。假设有一个类MyClass,其中包含一个字段private String name,我们可以通过反射来获取和设置该字段的值。

// 获取Field对象
Class<?> clazz = Class.forName("com.example.MyClass");
Field field = clazz.getDeclaredField("name");

// 创建对象
MyClass obj = (MyClass) clazz.newInstance();

// 设置字段的值
field.setAccessible(true);
field.set(obj, "Reflection");

// 获取字段的值
String name = (String) field.get(obj);

范型的应用

在使用反射时,有时候涉及到泛型的处理。例如,一个方法返回的是List<String>

Method method = SomeClass.class.getMethod("getList");
Type returnType = method.getGenericReturnType();
if (returnType instanceof ParameterizedType) {
    ParameterizedType type = (ParameterizedType) returnType;
    Type[] typeArguments = type.getActualTypeArguments();
    for (Type typeArgument : typeArguments) {
        Class<?> typeArgClass = (Class<?>) typeArgument;
        System.out.println("List的实际类型是:" + typeArgClass.getName());
    }
}
Memasang objek

Melalui refleksi, anda boleh mencipta objek kelas secara dinamik. Selepas mendapatkan objek Kelas, anda boleh menggunakan kaedah newInstance() untuk mencipta tika.

rrreee

Kaedah panggilan

Menggunakan refleksi, anda boleh memanggil kaedah secara dinamik dalam kelas. Katakan terdapat kelas MyClass, yang mengandungi kaedah public void doSomething(String param), yang boleh kita panggil melalui refleksi. 🎜rrreee🎜Mendapatkan dan menetapkan nilai medan 🎜🎜Melalui refleksi, anda boleh mendapatkan dan menetapkan nilai medan dalam kelas. Katakan terdapat kelas MyClass, yang mengandungi medan private String name Kita boleh mendapatkan dan menetapkan nilai medan ini melalui refleksi. 🎜rrreee🎜Aplikasi Generik🎜🎜Apabila menggunakan refleksi, kadangkala ia melibatkan pemprosesan generik. Sebagai contoh, jika kaedah mengembalikan List<string></string>, kita perlu mendapatkan jenis sebenar nilai pulangan melalui refleksi. 🎜rrreee🎜Ringkasan🎜🎜Melalui contoh di atas, kami menunjukkan kaedah panggilan biasa dalam pantulan Java, termasuk mendapatkan objek Kelas, objek instantiate, kaedah panggilan, mendapatkan dan menetapkan nilai medan serta mengendalikan generik. Refleksi menyediakan cara yang berkesan untuk mendapatkan dan memanipulasi maklumat kelas semasa runtime, tetapi disebabkan fleksibiliti dan dinamik refleksi, ia mungkin meningkatkan kerumitan dan prestasi overhed kod, jadi anda perlu mempertimbangkan dengan teliti apabila menggunakan refleksi. Saya harap artikel ini dapat membantu pembaca lebih memahami dan menggunakan refleksi Java. 🎜🎜Melalui contoh di atas, pembaca dapat memahami dengan lebih mendalam tentang aplikasi refleksi, dan pada masa yang sama, mereka boleh menjalankan lebih banyak latihan dan penerokaan mengikut situasi tertentu. Refleksi, sebagai ciri penting dalam pengaturcaraan Java, boleh membawa fleksibiliti dan skalabiliti yang lebih besar kepada reka bentuk program, dan mempunyai nilai aplikasi yang luas dalam projek sebenar. 🎜

Atas ialah kandungan terperinci Contoh panggilan kaedah dalam refleksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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!

Artikel Panas

Rimworld Odyssey Cara Ikan
4 minggu yang lalu By Jack chen
Apakah had transaksi untuk pengguna asing di Alipay?
1 bulan yang lalu By 下次还敢
Bolehkah saya mempunyai dua akaun Alipay?
4 minggu yang lalu By 下次还敢

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1505
276
Kejuruteraan Songsang dengan Refleksi Java: Menyahmimiskan Kerja Dalaman Perisian Kejuruteraan Songsang dengan Refleksi Java: Menyahmimiskan Kerja Dalaman Perisian Feb 19, 2024 pm 11:20 PM

Refleksi Java ialah alat berkuasa yang membolehkan anda mengakses medan peribadi dan kaedah kelas, dengan itu mendedahkan kerja dalaman perisian. Ini berguna dalam bidang seperti kejuruteraan terbalik, analisis perisian dan penyahpepijatan. Untuk menggunakan refleksi Java, anda perlu mengimport pakej java.lang.reflect terlebih dahulu. Kemudian, anda boleh menggunakan kaedah Class.forName() untuk mendapatkan objek Kelas sesuatu kelas. Sebaik sahaja anda mempunyai objek Kelas, anda boleh menggunakan pelbagai kaedah untuk mengakses medan dan kaedah kelas. Sebagai contoh, anda boleh menggunakan kaedah getDeclaredFields() untuk mendapatkan semua medan kelas, termasuk medan peribadi. Anda juga boleh menggunakan kaedah getDeclaredMethods().

Bagaimana untuk mendapatkan nilai atribut dalam refleksi java Bagaimana untuk mendapatkan nilai atribut dalam refleksi java Jan 03, 2024 pm 03:05 PM

Kaedah mendapatkan: 1. Buat objek sampel; 2. Dapatkan nilai medan melalui medan.get(orang), di mana orang ialah objek sampel dan medan ialah objek Medan, mewakili medan 3. Tetapkan medan melalui setAccessible (benar) Dalam keadaan boleh diakses, medan peribadi pun boleh mendapatkan nilainya; 4. Lintas tatasusunan medan, dapatkan nama dan nilai yang sepadan bagi setiap medan dan cetaknya.

Bagaimana untuk mendapatkan sifat dan nilai objek menggunakan refleksi java Bagaimana untuk mendapatkan sifat dan nilai objek menggunakan refleksi java Jan 03, 2024 pm 02:43 PM

Kaedah mendapatkan: 1. Buat kelas Orang dan dapatkan objek Kelas kelas melalui refleksi 2. Gunakan kaedah getDeclaredFields untuk mendapatkan semua medan kelas 3. Dengan melintasi tatasusunan medan, tetapkan medan kepada keadaan yang boleh diakses; dan kemudian gunakan get Kaedah mendapat nilai medan dan mencetak nama dan nilai medan.

Kaedah dan pelaksanaan memanggil antara muka API dalam PHP Kaedah dan pelaksanaan memanggil antara muka API dalam PHP Jun 18, 2023 pm 11:22 PM

Dengan kemunculan Internet, pengkomputeran awan dan era data besar, semakin banyak aplikasi perlu memanggil antara muka API pihak ketiga untuk mendapatkan data dan mencapai kesalingoperasian data dan kerja kolaboratif. Sebagai bahasa sebelah pelayan yang biasa digunakan, PHP juga boleh merealisasikan interaksi data dan penyepaduan sistem yang berbeza dengan memanggil antara muka API. Artikel ini akan memperkenalkan kaedah dan proses pelaksanaan memanggil antara muka API dalam PHP. 1. Pengenalan kepada API antara muka API (Application Programming Interface), program aplikasi

Apakah prinsip mekanisme pantulan Java? Apakah prinsip mekanisme pantulan Java? Jun 21, 2023 am 10:53 AM

Prinsip mekanisme pantulan Java ialah apabila fail bytecode dimuatkan ke dalam memori, jvm akan membedah bytecode dan mencipta objek Class bagi objek tersebut. Jvm menyimpan semua maklumat fail bytecode ke dalam objek Class objek Kelas, anda boleh menggunakan objek untuk menetapkan sifat atau kaedah objek, dsb. Mekanisme pantulan ialah fungsi untuk mengetahui semua atribut dan kaedah mana-mana kelas dalam keadaan berjalan Untuk sebarang objek, ia boleh memanggil mana-mana atribut dan kaedahnya, memperoleh maklumat secara dinamik, dan memanggil kaedah objek secara dinamik.

Elemen asas kelas ujian Java: analisis terperinci dan paparan contoh Elemen asas kelas ujian Java: analisis terperinci dan paparan contoh Jan 24, 2024 am 10:51 AM

Perkara asas kelas ujian Java: analisis terperinci dan contoh demonstrasi Dalam pembangunan Java, ujian adalah pautan penting. Pengujian boleh memastikan kualiti dan ketepatan fungsi kod dan mengurangkan kemungkinan pepijat. Kelas ujian adalah kunci untuk menguji kod Java. Artikel ini akan menganalisis mata asas kelas ujian Java secara terperinci dan memberikan contoh kod khusus untuk demonstrasi. 1. Mengapa kelas ujian diperlukan Semasa proses pembangunan, kod yang kita tulis perlu melalui ujian yang berbeza untuk mengesahkan ketepatannya. ujian

Bagaimana untuk memanggil kaedah menggunakan refleksi di Jawa Bagaimana untuk memanggil kaedah menggunakan refleksi di Jawa Dec 23, 2023 am 08:18 AM

Cara menggunakan kaedah refleksi untuk memanggil dalam Java Reflection ialah ciri penting bahasa Java Ia boleh mendapatkan maklumat kelas secara dinamik dan mengendalikan ahli kelas pada masa jalan, termasuk medan, kaedah dan pembina. Menggunakan refleksi membolehkan kami memanipulasi ahli kelas tanpa mengetahui kelas tertentu pada masa penyusunan, yang membolehkan kami menulis kod yang lebih fleksibel dan serba boleh. Artikel ini akan memperkenalkan cara menggunakan refleksi untuk memanggil kaedah dalam Java dan memberikan contoh kod khusus. 1. Untuk mendapatkan objek Kelas kelas di Jawa, gunakan refleksi untuk memanggil kaedah

Bagaimanakah mekanisme pantulan Java memanggil kaedah? Bagaimanakah mekanisme pantulan Java memanggil kaedah? Apr 15, 2024 pm 04:21 PM

Mekanisme pantulan membenarkan program untuk memanggil kaedah pada masa jalan. Langkah-langkahnya adalah seperti berikut: Dapatkan objek kelas dan dapatkan objek kaedah. Panggil kaedah, menghantar contoh objek dan parameter. Gunakan refleksi untuk memanggil kaedah getName() kelas Pekerja dan kembalikan "JohnDoe".

See all articles