下载此文档

java(教学0)韩建雷 java反射机制 relea.ppt


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

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

非法内容举报中心
文档信息
  • 页数37
  • 收藏数0 收藏
  • 顶次数0
  • 上传人54156456
  • 文件大小512 KB
  • 时间2019-01-16
最近更新