Java反射机制与动态代理

Java反射机制与动态代理

ID:37239674

大小:219.94 KB

页数:26页

时间:2019-05-20

Java反射机制与动态代理_第1页
Java反射机制与动态代理_第2页
Java反射机制与动态代理_第3页
Java反射机制与动态代理_第4页
Java反射机制与动态代理_第5页
资源描述:

《Java反射机制与动态代理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、前言,在Java运行时刻,能否知道一个类的属性方法并调用改动之?对于任意一个对象,能否知道他的所属类,并调用他的方法?答案是肯定的。这种动态的获取信息及动态调用方法的机制在Java中称为“反射”(reflection)。Java反射机制主要提供以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法。Reflection是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过ReflectionAPIs取得任何一个已知名称的class的内部信息,包括其mo

2、difiers(诸如public,static等等)、superclass(例如Object)、实现之interfaces(例如Serializable),也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods。一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:Class类:代表一个类;Field类:代表类的成员变量(成员变量也称为类的属性);Method类:

3、代表类的方法;Constructor类:代表类的构造方法;Array类:提供了动态创建数组,以及访问数组的元素的静态方法;例程DateMethodsTest类演示了ReflectionAPI的基本作用,它读取命令行参数指定的类名,然后打印这个类所具有的方法信息,代码如下:Java代码1.publicclassDateMethodsTest2.{3.publicstaticvoidmain(Stringargs[])throwsException4.{5.//加载并初始化命令行参数指定的类6.ClassclassType=Class.forName("java.uti

4、l.Date");7.//获得类的所有方法8.Methodmethods[]=classType.getDeclaredMethods();9.for(inti=0;i

5、的对象,然后把object对象中的所有属性拷贝到新建的对象中,并将它返回这个例子只能复制简单的JavaBean,假定JavaBean的每个属性都有public类型的getXXX()和setXXX()方法,代码如下:Java代码1.publicclassReflectTester{2.publicObjectcopy(Objectobject)throwsException{3.//获得对象的类型4.ClassclassType=object.getClass();5.System.out.println("Class:"+classType.getName());6

6、.7.//通过默认构造方法创建一个新的对象8.ObjectobjectCopy=classType.getConstructor(newClass[]{}).newInstance(newObject[]{});9.10.//获得对象的所有属性11.Fieldfields[]=classType.getDeclaredFields();12.13.for(inti=0;i

7、=fieldName.substring(0,1).toUpperCase();18.//获得和属性对应的getXXX()方法的名字19.StringgetMethodName="get"+firstLetter+fieldName.substring(1);20.//获得和属性对应的setXXX()方法的名字21.StringsetMethodName="set"+firstLetter+fieldName.substring(1);22.23.//获得和属性对应的getXXX()方法24.MethodgetMethod=c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。