- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
Java反射技术浅谈
?
?
论文导读:反射的引入反射(Reflection)的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。可是这种实例化对象的方法存在一个问题,就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制。◆Field类:代表类的成员变量(成员变量也称为类的属性)。◆Array类:提供了动态创建数组,以及访问数组元素的静态方法。2)利用Class对象的getConstructor()方法获取指定的构造器(准备一个Class[]作为该方法的参数类型)。
关键词:反射,构造器,属性,方法,数组
?
一、引言1:反射的引入反射(Reflection)的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++、OpenC++和OpenJava等就是基于反射机制的语言。
自从1995年问世以来,Java一直以其面向对象的,可移植的,多线程的和动态的特点而著称,并得到了广泛的应用。严格来讲,java并不能算纯粹的动态语言,但是Java有着一个非常突出的动态相关机制:反射(Reflection)。在Java中我们可以于运行时加载、发现、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,得到其完整构造(但不包括methods定义),并生成其对象实体,或对其fields设值;或调用其methods。
我们可以通过以下语句对反射有一个更清楚的认识。“Personp=newPerson();”这是什么?当然是实例化一个对象了。可是这种实例化对象的方法存在一个问题,就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制。那么有没有这样一种方式,让我们不知道这个类的类名就可以实例化它的对象呢?有,可以采用反射技术来实现。
2:反射的主要接口和类在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包。
◆Class类:代表一个类。
◆Field类:代表类的成员变量(成员变量也称为类的属性)。免费。
◆Method类:代表类的方法。
◆Constructor类:代表类的构造方法。
◆Array类:提供了动态创建数组,以及访问数组元素的静态方法。
二、反射的入口:Class类JAVA中的类反射就是一个在当前JVM中支持类、接口和对象内省的小型的、类型安全的和可靠的API。它是通过java.1ang.reflect包提供的,可以对类的能力进行分析。反射使程序代码能够访问装载到JVM中的类的内部信息,主要包括获取已装载类的字段、方法和构造函数的信息,允许编写处理类的代码,这些类是在程序运行时临时确定的,而非源代码中事先选定的。这使反射成为构建灵活的应用的主要工具。
1.Class类Java中的“Class”类是Java中一个十分特殊的类。它和其它类一样继承自“Object”类,其对象用以表达Java程序运行时的类和接口。当一个类被加载时,JVM便自动产生一个类对象。
在java.lang.Object类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型。免费。Class类是ReflectionAPI中的核心类,它有以下方法。
◆getName():获得类的完整名字。
◆getFields():获得类的public类型的属性。
◆getDeclaredFields():获得类的所有属性。
◆getMethods():获得类的public类型的方法。
◆getDeclaredMethods():获得类的所有方法。
◆getMethod(Stringname,Class[]parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes参数指定方法的参数类型。
◆getConstrutors():获得类的public类型的构造方法。
◆getConstrutor(Class[]parameterTypes):获得类的特定构造方法,parameterTypes参数指定构造方法的参数类型。
◆newInstance():通过类的不带参数的构造方法创建这个类的一个对象。、
“Class”是Java反射机制的起源。针对任何想探查的类,只有先为它产生一个“Class”对象,接下来才能由这个“Class”对象调用为数十
您可能关注的文档
最近下载
- 文华期货软件指标文华财经指标公式源码期货1分钟k线图最佳买卖点.doc
- 教科版四年级上册科学 《声音》单元解读.pptx VIP
- 初中培优会讲话稿.docx
- 彭祖玲 教学评一致性12.《桥》教案-语文六年级上册.doc
- 算法设计与问题求解PPT课件(共8单元)-7-Search.pptx VIP
- 小狗的小房子(阅读课上课课件).ppt
- 算法设计与问题求解PPT课件(共8单元)-8- Review.pptx VIP
- 第6.1课《描述事物》(课件)-【中职专用】高二语文同步精品课件(高教版2023·职业模块).pptx
- 《国际海运危险货物规则(IMDG规则)》修正案(第MSC.372(93)决议).docx VIP
- 一种数控转台精度保持性的检测装置.pdf VIP
文档评论(0)