Java编程思想十四章节类型信息之反射与代理.pptVIP

Java编程思想十四章节类型信息之反射与代理.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java编程思想十四章节类型信息之反射与代理

第十四章 类型信息;五、反射:运行时的类信息;★ RTTI的三种使用形式 ◆ 传统的类型转换(发生在编译时) ◆ Class对象(通过查询Class对象可以获取运行时 所需的信息) ◆ 关键字instanceof(发生在运行时);五、反射:运行时的类信息;★ 在Java程序中,我们常常会利用这样的语句来创 建一个对象:Date date = new Date(); ◆ 注意:在该语句中,date的类型(Java.util.Date) 在编译时已经确定 ◆ 那么,有没有什么办法,使我们可以将对象类型 的确定时间由编译时转到运行时,答案是肯定的, 这就是利用Java的反射机制;五、反射:运行时的类信息;1、反射概念的提出很快引发了计算机科学领域关于 应用反射性的研究 ★ 它首先被程序设计语言所采用,并在Lisp和面向 对象方面取得了成绩,其中:LEAD/LEAD++ 、 OpenC++ 和OpenJava就是基于反射机制的语言 ◆ 而现在,反射机制也被应用到了视窗系统、操作 系统和文件系统中;2、反射本身并不是一个新概念,我们很容易想起在 光学中也有反射的概念 ★ 比如照镜子,通过反射,我们可以看到自己 ★ 尽管在计算机科学领域中,反射这个概念已经被 赋予了很多新的含义,但是从现象上来说,它们 确实有某些相通之处,而这种联想有助于我们对 反射概念的理解;3、在计算机科学中,反射是指通过某种机制来实现 对自己行为的自描述和监测,并且能够根据这些 自描述,调整或修改系统、应用或程序所描述的 行为和状态 ★ 可以看出,同一般的反射概念相比,计算机科学 领域的反射不单单指反射本身,还包括了对反射 结果所采取的措施;五、反射:运行时的类信息;★ 从这个被大多数人所公认的,关于动态语言的 定义来看,Perl、Python、Ruby是动态语言 ◆ 而C++、Java、C#不是动态语言 ◆??尽管在这样的定义与分类下,Java并不是一种 动态语言,但它却有着一个非常突出的与动态 相关的机制:反射;五、反射:运行时的类信息;五、反射:运行时的类信息;五、反射:运行时的类信息;★ import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.forName(args[0]); // 保证编译期间不知道类的详细信息 Method m[] = c.getDeclaredMethods(); ; for(int i = 0;i m.length;i++) System.out.println(m[i].toString()); } catch(Throwable e) { System.err.println(e); } } // End of main } // End of Class;★ 按如下语句执行: java DumpMethods java.util.Stack ◆ 它的结果输出为:;★ 分析: java.lang.reflect.Method是这样的一个类: 它用来描述所指定的类中单个方法 ◆ 这个程序使用Class.forName( ) 载入指定的类, 然后再调用getDeclaredMethods()方法来获取 该指定类的方法列表 ◆ 这样就列出了java.util.Stack类的各个方法名以及 它们的限制符和返回类型;五、反射:运行时的类信息;★ Java.lang.reflect包的接口 ⑴ InvocationHandler接口: ⑵ Member接口: ◆ 该接口可以获取有关类成员(包括域或者方法) 或者构造函数的信息;★ Java.lang.reflect包的类 ⑴ AccessibleObject类: ◆ 该类是域(field)对象、方法(method)对象、

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档