欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

Java反射技术浅谈

时间:2011-04-23  作者:秩名

论文导读:反射的引入反射(Reflection)的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。可是这种实例化对象的方法存在一个问题,就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制。◆Field类:代表类的成员变量(成员变量也称为类的属性)。◆Array类:提供了动态创建数组,以及访问数组元素的静态方法。2)利用Class对象的getConstructor()方法获取指定的构造器(准备一个Class[]作为该方法的参数类型)。
关键词:反射,构造器,属性,方法,数组
 

一、引言1:反射的引入反射(Reflection)的概念是由Smith 在1982 年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp 和面向对象方面取得了成绩。其中LEAD/LEAD++、Open C++和Open Java 等就是基于反射机制的语言。

自从1995 年问世以来,Java 一直以其面向对象的,可移植的,多线程的和动态的特点而著称,并得到了广泛的应用。严格来讲,java 并不能算纯粹的动态语言,但是Java 有着一个非常突出的动态相关机制:反射(Reflection)。在Java 中我们可以于运行时加载、发现、使用编译期间完全未知的classes。换句话说,Java 程序可以加载一个运行时才得知名称的class,得到其完整构造(但不包括methods 定义),并生成其对象实体,或对其fields 设值;或调用其methods。

我们可以通过以下语句对反射有一个更清楚的认识。“Person p=new Person();”这是什么?当然是实例化一个对象了。可是这种实例化对象的方法存在一个问题,就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制。那么有没有这样一种方式,让我们不知道这个类的类名就可以实例化它的对象呢?有,可以采用反射技术来实现。

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类是Reflection API中的核心类,它有以下方法。

◆getName():获得类的完整名字。

◆getFields():获得类的public类型的属性。

◆getDeclaredFields():获得类的所有属性。

◆getMethods():获得类的public类型的方法。

◆getDeclaredMethods():获得类的所有方法。

◆getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes参数指定方法的参数类型。

◆getConstrutors():获得类的public类型的构造方法。

◆getConstrutor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes参数指定构造方法的参数类型。

◆newInstance():通过类的不带参数的构造方法创建这个类的一个对象。、

“Class”是Java 反射机制的起源。针对任何想探查的类, 只有先为它产生一个“Class”对象,接下来才能由这个“Class”对象调用为数十多个的反射APIs。因此, 利用反射APIs 动态访问某个类要经过以下三个步骤:

(1)创建一个“Class”对象;

(2)利用创建的“Class”对象获得类的内部信息;

(3)利用java.1ang.reflect 包的反射APIs, 动态处理上一步获得的类的内部信息。

2. Class类举例 public static voidmain(String[] args) throws Exception {

//1、 取得某一个类的Class实例,包含着该类的元数据,有三种方法

//Class<?> clazz = String.class; //方法1

//Class clazz='abc'.getClass(); //方法2

Classclazz = Class.forName('java.lang.String');// 方法3

//2、1从Class中取出对应类的全部字段,并输出其信息

Fieldfields[] = clazz.getDeclaredFields();

for(Field field : fields)

System.out.println(field.getName()+ field.getType());

//2、2从Class中取出对应类的某个字段,并输出其信息

Fieldfield = clazz.getDeclaredField('count');

System.out.println(field.getName()+ field.getType());

//3、1从Class中取出对应类的全部方法,并输出其信息

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:Java多线程同步机制在售票系统的实现
下一篇论文:Java技术在XML和数据库通信技术中的应用
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文