Java反射技术浅谈.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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”对象调用为数十

文档评论(0)

木槿流年 + 关注
实名认证
内容提供者

悟已往之不谏,知来者之可追

1亿VIP精品文档

相关文档