下载此文档

java教学0韩建雷java反射机制.pptx


文档分类:IT计算机 | 页数:约36页 举报非法文档有奖
1/36
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/36 下载此文档
文档列表 文档介绍
议程
概述
主要功能
分析类
取得Class 对象
取得类名
找出超类
确定某类实现的接口
检查接口
取得类字段
取得构造方法
取得方法信息
取得字段的值
创建对象
库文档分享
概述
在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。
Reflection是一系列的API,它用于表示或者处理当前JVM中的类,接口和对象。
库文档分享
主要功能
确定一个对象的类
取出类的modifiers,数据成员,方法,构造器和超类
找出某个接口里定义的常量和方法说明
创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象)
取得和设定对象数据成员的值,如果数据成员名是运行时刻确定的也能做倒。
在运行时刻调用动态对象的方法
创建数组,数组大小和类型在运行时刻才确定。也能更改数组成员的值。
库文档分享
分析类
如果你在编一个类浏览器程序,你就需要取得类在运行时刻的有关信息。比如,你想显示某个类的数据成员名,方法和构造器。再比如,你想显示某个类到底实现了哪些接口。这些信息可以由自省此类的Class对象来取得。
对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个类的有关信息。你可以通过调用Class对象的有关方法,返回特定类的构造器对象,方法对象和数据成员对象。通过这些返回的对象,你就可以得到构造器,方法和数据成员的所有详细原始定义。
Class对象也包含接口信息。你可以调用Class对象的某些方法来取得某接口的modifiers,方法和公共常数。如果Class对象用来表示接口,那么Class对象的部份方法就不可用。比如getConstructors,接口根本没构造器,所以这个方法就没用。
库文档分享
取得Class对象
如果可以取得某个类的实例,。
请看例子:
mystery是某个类的对象。
Class c = ();
类对象c可以直接输出,请看
JButton jb=new JButton();
Class mc= () ;
("类内容"+() );
如果你想取得某个类对象的超类,可以用getSuperclass方法。本例中,ponent的Class对象,类是TextField的超类。
TextField t = new TextField();
Class c = ();
Class s = ();
运行后直接输出c和s的结果是:
本类内容class
超类内容class
库文档分享
如果你知道类在编译时的名字(类名),取出它的class对象就简单了:类名后跟“.class”后缀就行了。如:
Class c1 = ;
("本类内容+() );
有时候,在编译的时候,对象属于哪个类,类名不知道(多态性),但是在运行的时候就知道对象属于哪个类了(运行时刻绑定)。这时候运行时刻取得对象的类就应该用forName方法。在下例中,如果字串变量strg内容是””,那么用forName方法返回Button的Class 对象。
如:
库文档分享
String strg="";
Class c2;
c2=null;
try
{
c2= (strg) ;
}
catch(ClassNotFoundException e)
{
("没有这个类");
(1);
}
("forName 内容"+() );
库文档分享
取得类名
每个类都有类名,比如下面的类名就是Point
public class Point {int x, y;}
在运行时刻,类名可以调用Class对象的getName方法来取得。getName返回一个字串,字串是完整的类名。
下面举例:例子首先取得对象的Class对象,然后调用getName得到类名。
库文档分享
import

java教学0韩建雷java反射机制 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数36
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小175 KB
  • 时间2018-11-26