预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机交流平台:计算机故障_计算机论坛www.it168bbs.comwy java反射机制的用法 什么是反射: 反射是java语言的一个特性,它允许程序在运行时来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。java的反射机制的实现要借助4个类:Class,Constructor,Field,Method其中Class代表的是类对象,Constructor类的构造器对象,Field类的属性对象,Method 类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组成部分。 在正常情况下,必须知道一个类的完整路径之后才可以实例化对象,但是在java中也允许通过一个对象来找到其所在的类的信息,那么这实际上就是Class类的功能。 [java]packagecom.itmyhome;classA{}publicclassT{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubAa=newA();System.out.println(a.getClass().getName());//com.itmyhome.A}} packagecom.itmyhome; classA{}publicclassT{ publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubAa=newA();System.out.println(a.getClass().getName());//com.itmyhome.A} }Object类的支持 在Object类中定义了以下的方法,此方法将被所有子类继承: publicfinalClassgetClass() 以上的方法返回值的类型是一个"Class"类,实际上此类是java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称。 Class类 Class本身表示一个类的本身,通过Class可以完整的得到一个类中的完整结构,包括此类中的方法定义,属性定义等。 实例化Class类对象 有三种方法实例化Class对象: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() [java]packagecom.itmyhome;classA{}publicclassT{publicstaticvoidmain(String[]args)throwsClassNotFoundException{//TODOAuto-generatedmethodstubClass<?>c1=Class.forName("com.itmyhome.A");Class<?>c2=A.class;Class<?>c3=newA().getClass();System.out.println(c1.getName());System.out.println(c2.getName());System.out.println(c3.getName());}} packagecom.itmyhome; classA{}publicclassT{ publicstaticvoidmain(String[]args)throwsClassNotFoundException{//TODOAuto-generatedmethodstubClass<?>c1=Class.forName("com.itmyhome.A");Class<?>c2=A.class;Class<?>c3=newA().getClass();System.out.println(c1.getName());System.out.println(c2.getName());System.out.println(c3.getName());} } Class主要是反射的源头,不光可以取得对象所在类的信息,也可以直接通过Class类的方法进行对象的实例化操作正常情况下,使用关键字new为对象实例化,如果现在已经实例化好了Class对象,则就可以通过Class类中提供的 实例化对象 [java]packagecom.itmyhome;classPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.a