Java中含数组参数的反射机制详解
这篇文章主要介绍了详解java中反射机制(含数组参数)的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
详解java中反射机制(含数组参数)
java的反射是我一直非常喜欢的地方,因为有了这个,可以让程序的灵活性大大的增加,同时通用性也提高了很多。反射原理什么的,我就不想做过大介绍了,网上一搜,就一大把。(下面我是只附录介绍下)
Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods
在这里,我想说的是如果根据字符串去做我们自己想要的事(包括动态执行对应的方法,生成相应的类),我们在传送数据的时候,大部分都是传字符串的(HTTP,socket)等,我们接受到这些字符串时,再根据这些字符串内容而去做相应的事,那是一件非常不错的事,可以远程调用方法(客户端发送指定的字符串,让服务器根据反射去执行对应的方法)。。。事实上,我也曾经做过这样项目,客户端(不是java语言写的)利用socket去呼叫服务器(java写的)方法,同时还可以直接传递参数,这些都是根据java的反射技术实现的。好了,其他的就多说了,我们从最基础的看起吧,下面是一个最基本方法反射
/** * @(#)TestInt.java * * @author soda E-mail:sujun10@21cn.com * @version 1.0 * <br>Copyright (C), 2007 soda.C * <br>This program is protected by copyright laws. * <br>Date:2007.4 */ import java.lang.reflect.Method; public class TestInt { //测试方法 public String test(String name,int i) { System.out.println("name:" + name); System.out.println(i); return "反射成功!"; } public static void main(String[] args) { try { //获取class文件,可以Class.for("Test")获取,这样也可以根据字符串生成类啦 Class te = TestInt.class; Class[] cl = new Class[2]; //添加参数类型 cl[0] = String.class; cl[1] = int.class; System.out.println("11111111"); //根据public的方法,以及参数,参数是Class[]形式 Method method = te.getMethod("test", cl); System.out.println("222222222222"); //开始填充参数 Object[] params = new Object[2]; //params[0] = new String("soda"); params[0] = new String("soda"); params[1] = new Integer(23); System.out.println("22222222222"); //获取该class的实例 Object obj = te.newInstance(); //进行方法调用 Object result = method.invoke(obj, params); System.out.println("结果:" + result); } catch (Exception e) { System.out.println(e); } } }
编译执行,可以看到想要的结果,想象一下,把那些字符串变成别的地方传过来的数据:)
再来一个方法中有数组的反射,我研究了一下,有一点点的区别的。大家要仔细看哦
/** * @(#)Test.java * * @author soda E-mail:sujun10@21cn.com * @version 1.0 * <br>Copyright (C), 2007 soda.C * <br>This program is protected by copyright laws. * <br>Program Name:FlashSyncServer * <br>Date:2007.1 */ import java.lang.reflect.Method; //这里我就不做什么解释了,和前面的几乎一样,大家也可以自己去查查api,Class类的api public class Test { public void test(double[] dou) { System.out.println(dou.length); System.out.println(dou[0]); } public static void main(String[] args) throws Exception { try { Class[] cl = new Class[1]; cl[0] = double[].class; System.out.println("cl[0]:" + cl[0]); Object[] in = new Object[1]; //注意这里,不是Double[],而是double[]。这里不能用对象数组 double[] db = new double[1]; db[0] = 100.0; in[0] = db; Class te = Test.class; Method method = te.getMethod("test", cl); Object obj = te.newInstance(); Object objs = method.invoke(obj, in); } catch (Exception e) { System.out.println(e); } } }
好了,基本的是这样了,再复杂的程序也是有基础演变而来的。我在这里就学会许多:)
Atas ialah kandungan terperinci Java中含数组参数的反射机制详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.
