java反射机制详解与应用

java反射机制详解与应用

ID:40557052

大小:15.81 KB

页数:6页

时间:2019-08-04

java反射机制详解与应用_第1页
java反射机制详解与应用_第2页
java反射机制详解与应用_第3页
java反射机制详解与应用_第4页
java反射机制详解与应用_第5页
资源描述:

《java反射机制详解与应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、java有着一个非常突出的动态相关机制:Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods1。这种“看透class”的能力(theabilityoftheprogramtoexamineitself)被称为introspection(

2、内省、内观、反省)。Reflection和introspection是常被并提的两个术语。      这个机制允许程序在运行时透过ReflectionAPIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public,static等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。      目前好多框架都会用到java的

3、反射机制。比如struts2,sping,hibernate。如果我们不用struts2,自己写一个类似的功能也是可以实现的,比如浏览器通过HTTP发送数据,而这些数据都是字符串,我们接受到这些字符串时,可以通过反射去构造一个对象(通过拦截器做成框架的功能),这样就可以用对象的get和set方法了,而不用原始的getPeremter方法。事实上,在struts2出来之前,我们又不想用struts1的ActionForm就做过这样项目。一、Classobject的产生方式有以下几种。1、运用getCl

4、ass()注:每个class都有此函数   Stringstr="abc";Classc1=str.getClass();2、运用staticmethodClass.forName()(最常被使用)Classc1=Class.forName("java.lang.String");Classc2=Class.forName("java.awt.Button");3、运用.class语法   Classc1=String.class;Classc2=java.awt.Button.class;4、运用

5、primitivewrapperclasses的TYPE语法Classc1=Integer.TYPE;Classc2=Long.TYPE;二、Java类反射中的主要方法对于以下三类组件中的任何一类来说--构造函数、字段和方法--java.lang.Class提供四种独立的反射调用,以不同的方式来获得信息。调用都遵循一种标准格式。以下是用于查找构造函数的一组反射调用:ConstructorgetConstructor(Class[]params)--获得使用特殊的参数类型的公共构造函数,Constru

6、ctor[]getConstructors()--获得类的所有公共构造函数ConstructorgetDeclaredConstructor(Class[]params)--获得使用特定参数类型的构造函数(与接入级别无关)Constructor[]getDeclaredConstructors()--获得类的所有构造函数(与接入级别无关)获得字段信息的Class反射调用不同于那些用于接入构造函数的调用,在参数类型数组中使用了字段名:FieldgetField(Stringname)--获得命名的公共

7、字段Field[]getFields()--获得类的所有公共字段FieldgetDeclaredField(Stringname)--获得类声明的命名的字段Field[]getDeclaredFields()--获得类声明的所有字段用于获得方法信息函数:MethodgetMethod(Stringname,Class[]params)--使用特定的参数类型,获得命名的公共方法Method[]getMethods()--获得类的所有公共方法MethodgetDeclaredMethod(Stringn

8、ame,Class[]params)--使用特写的参数类型,获得类声明的命名的方法Method[]getDeclaredMethods()--获得类声明的所有方法三、以下是代码实例:importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;importjava.lang.reflect.Method;publicclassReflectTester{   /**   *通过java的反射机制获取

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

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

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