1 / 24
文档名称:

JAVA-L16-Reflection.ppt

格式:ppt   页数:24
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

JAVA-L16-Reflection.ppt

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

JAVA-L16-Reflection.ppt

文档介绍

文档介绍:Reflection Mechanism Java 反射机制
LiFan(李凡)
Chengdu University of Information Technology
The Department puter Science
2005
What is the reflection?
反射(reflection)又称为自省(introspection),是Java语言提供的一种通过类的Class对象获取类的全部成员和类所属的类型(类的超类和实现的接口)信息的机制
反射可用于实现以下两种功能:
(1) 创建类型浏览器,获取类型的结构信息
(2) 动态创建和操作对象
在使用各种面向对象设计方法都不能实现设
计需求的情况下才使用反射!
Class
在Java语言中,,也声明了与反射相关的各种方法
任何类、接口、数组或基本数据类型都提供了静态的类Class的对象引用class

int[].class
Methods for Class Objects
获取指定类型的Class对象是进行反射操作的起点
可通过以下4种方法获取类型的Class对象:
(1) 调用类Object中的getClass()方法
(2) 访问类型的静态域<类型>.class
(3) (String className)方法
(4) 调用Class对象的getClasses()方法返回嵌套类或接口的Class对象
int[] a={10,100,1000};
Class intArrayClass=();
int[] a={10,100,1000};
Class intArrayClass=;
Class jdbcDriverCls=(“”);
class A{
public class B{……}
……
}
Class bClass=()[0];
Methods for Type Kind
该类提供了以下方法用于判断Class对象的类型:
public boolean isInterface()
public boolean isArray()
public boolean isPrimitive()
public void showKind(Class classObj){
if(())
(“It is an interface type”);
else if(())
(“It is an array type”);
else if(())
(“It is a primitive type”);
else (“It is a class type”);
}
showKind();
showKind();
showKind(byte[].class);
showKind();
It is a class type
It is an interface type
It is an array type
It is a primitive type
Methods for Type Hierarchy
类Class声明了以下方法用于获取类的父类和实现的接口信息
public Class[] getInterfaces()
public Class getSuperClass()
类Class声明了以下方法用于获取类的修饰符信息
public int getModifiers()
Methods for Type Hierarchy
类Class声明了以下方法用于获取数组元素的类型信息,非数组类型则返回null
public Class ponentType()
类Class声明了以下方法用于获取嵌套类所在的外层类信息
public Class getDeclaringClass()
Class