- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四章 类型信息 ★ RTTI ★ 反射与代理 14.6、反射:运行时的类信息 P334 1、 如果不知道某个对象的类型,RTTI可以告诉你,但是有一个限制: ★ 这个类型在编译时必须已知, 这样才能使用RTTI识别它,并且利用这些信息做一些有用的事 ◆ 那么,有没有什么办法,使我们可以将对象类型 的确定时间由编译时转到运行时,答案是肯定的, 这就是利用Java的反射机制 2、反射被程序设计语言所采用,并在面向对象方面取得了成绩,其中 OpenC++ 和OpenJava是基于反射机制的语言。 ◆ 现在,反射机制也被应用到了操作系统和文件系统中 计算机科学中,反射是指通过某种机制来实现对自己行为的自描述和监测,并且能够根据这些自描述,调整或修改程序所描述的行为和状态 3、 在Java中,反射的概念和作用 ⑴ 程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言 。 C++、Java、C#都不是动态语言,但它们却有着一个非常突出的与动态相关的机制:反射 (2) 作用:利用Java的反射机制,程序可在执行期载入、探知和使用编译期间完全未知的class ★ 对于这些classe, 我们不单单可以用来生成各种对象,还可获取其Field,对Field设值,以及调用其方法等等。 14.6.1、类方法提取器 P335 1、Java.lang.reflect包简介 (1) java.lang.reflect.Method 类:是最终类,是用于描述某种类型的成员函数(不包括构造函数)的类。 Class类的getMethods方法: public Method[ ] getMethods() 返回一个Method 对象的数组,数组中的对象反映此 Class 对象所描述的类或接口的公有成员函数。(包括从父类和父接口继承的公共成员函数) import java.lang.reflect.*;//支持反射机制的类库 public class DumpMethods { public static void main(String args[ ]) { try // 编译期间不知道类的详细信息 { Class c = Class. forName(args[0]); Method[ ] m = c. getMethods(); for(int i = 0;i m. length;i++) println(m[i]. toString()); } catch( Throwable e) { println(e); } } } ★ 按如下语句执行: java DumpMethods java.util.Stack ◆ 它的结果输出为: …….. //包括从Object类继承的成员函数 …….. Java.lang.reflect. Constructor类:提供关于类的构造方法的信息。 private static Pattern p = Ppile(\\w+\\.); public static void main(String args[ ]){ //P336 try { “java.util.Stack” Class? c = Class.forName(args[0]); Constructor[ ] ctors = c.getConstructors(); …… for(Constructor ctor : ctors) print(p.matcher(ctor.toString()).replaceAll()); …… } catch(ClassNotFoundException e) { …… } } //public Stack() Class对象的getDeclaredMethods方法: public Method[ ] getDeclaredMethods() 返回 Method 对象的一个数组,这些对象反 映此 Class 对象表示的类或接口中的所有方 法,包括公有、保护、默认访问
您可能关注的文档
最近下载
- 重庆大学版信息科技四年级上册全册教案教学设计.doc VIP
- 大班课件《有趣的盐》.pptx VIP
- DB51T 3239-2024 危险化学品安全生产数据交换规范.pdf VIP
- 中小学音体美器材配备重点标准.doc VIP
- 2024年全国考点PET口语真题汇总(1-12月).pdf VIP
- 医疗器械不良事件培训试题及答案.docx VIP
- 马工程《马克思主义政治经济学概论》(第2版)配套题库【考研真题精选+章节题库】.pdf VIP
- 话题幼儿园语言教育活动设计.ppt
- JBT 5943-2018 工程机械 焊接件通用技术条件.pdf VIP
- 创新国有企业党建工作提升员工幸福感-来源:现代企业文化·下旬刊(第2020003期)-中国工人出版社.pdf VIP
文档评论(0)