欢迎来到天天文库
浏览记录
ID:50517205
大小:88.00 KB
页数:5页
时间:2020-03-10
《java se 062 class类、method类及field类的使用方式深度探析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaSE062Class类、Method类及Field类的使用方式深度探析1、要想使用反射,首先需要获得类对象所对应的Class类的类对象。要想使用反射,首先需要获得待处理类或对象所对应的Class对象。解说:Class对象能够洞悉到它所对应的目标类,或称目标对象里面的所有内容,比如说方法,比如说成员变量。—个Class对象对应的是一个类的信息。一个Method对象对应的是一个方法的信息。一个Field对象对应的是一个属性的信息。2、获取某个类或某个对象所对应的Class对象的常用3种方式:a)使用Class类的静态方法forNamezClass.forNamef^
2、java.Iang.string^);b)使用类的.class方法:String.class;c)使用对象的getClass()方法:Strings="aa";Class>classType=s.getClass();3、如何来生成一个对象a):classType.newlnstance();解说:创建一个新的,由Class对象代表类的一个实例,这个类是被实例化好像是通过一个new的表达式并且使用一个空的参数列表形式。即:classType.newlnstance();==>newCustomer();注意参数是空的。即这个类的构造方法不接收参数,那我们就可以使用这
3、种方式去生成,但是反过来,如果构造方法接收参数,我们就没法用这种方式去生成对象。b):如果构造方法接收参数,在反射屮应该如何生成对象呢?解说:要想生成一个对彖,必然需要通过类的构造方法去生成,反射里血存在Constructor这样一个类,这个类代表构造方法所对应的一个Constructor对彖。可以通过它提供的方法去生成带参数构造方法的类对彖。如何获得Constructor这样一个类对象呢,通过Class对彖去获得。4、总结若想通过类的不带参数的构造方法来生成对象,我们有两种方式:a)^先获得Class对彖,然示通过Class对彖的newlnstancef)方法育接生成
4、即可:Class>classType=String.class;Objectobj=classType.newlnstance();b)、先获得Class对象,然后通过该对象获得对应的Consructor对象,再通过该Constructor对象的newlnstance()7j法生成。Class>classType=Customer.class;Constructorcons=classType.getConstructor(newClass[]{});Objectobj=cons.newlnstance(newObject[]{});若想通过类的带参数的构造方法
5、生成对象,只能使用下血的这一种方式:Class>classType=Customer.class;Constructorcons=classType.getConstructor(newClass[]{String.classzint.class});Objectobj=cons.newlnstance(newObject[]{/Zzhangsan;22});packagecom.javase-refelect;importjava•lang.reflect.Constructor;importjava•lang.reflect.InvocationTargetEx
6、ception;publicclassReflectTester{/★★*定义一个方法,完成这样一个功能,接收一个Customer类型的一个对象,然后将对象的属性拷贝出來,*生成一个新的对象,然后将新的对象拷回來。相当于实现一个对象的拷贝。**传统解决问题的方式:*先有一个Customer对象,然后再去生成-个Customer对象,然后调用新生成对象的set方法,同吋调用已有对象的*get方法,把g弍的值set到得到的新対象里面。**使用反射来实现对象的拷贝*@throwsNoSuchMethodException*QthrowsSecurityException*@t
7、hrows*gthrows*@throws^throws*/InvocationTargetExceptionIllegalAccessExceptionInstantiationExceptionIllegalArgumentException//该方法实现对Customer对象的拷贝。即将原有对象里面的属性拷贝出來放到新的对象里面,将新对象返回来。publicObjectcopy(Objectobject)throwsSecurityException,NoSuchMethodException,IllegalArgumentExce
此文档下载收益归作者所有