- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 反射与Annotation(选学) 主讲人:程裕强 主要内容 理解反射机制概念 掌握通过反射机制访问构造器 掌握通过反射机制访问属性 掌握通过反射机制访问方法 理解Annotation概念 掌握3个系统内置的Annotation 掌握自定义Annotation 掌握通过反射机制访问Annotation 13.1引例 绑定(binding)是指一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定(前绑定、编译时绑定)和动态绑定(后绑定、运行时绑定); 静态绑定:在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。可以理解为程序编译期的绑定;java当中的方法只有final,static,private和构造方法是前期绑定 动态绑定:在运行时根据具体对象的类型进行绑定。 若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。 除了final,static,private和构造方法是前期绑定外,其他的方法全部为动态绑定。所以方法的重写和重载可能是静态绑定,也可能是动态绑定。 所以在程序执行时(注意:不是编译时)需要对变量或者对象的类型判定。 例1:测试程序运行时的类型判定。 public class TypeTest{ public static void checkType(Object o){ if(o instanceof Integer){ System.out.println(方法参数的类型是Integer); }else if(o instanceof Double){ System.out.println(方法参数的类型是Double); }else if(o instanceof String){ System.out.println(方法参数的类型是String); }else{ System.out.println(方法参数的类型是其他类型); } } public static void main(String[] args) { checkType(hello,world); checkType(123); checkType(3.14); checkType(new TypeTest()); } } 现在可以在程序运行时进行变量或对象的类型判定,但是有时候我们不单单需要知道对象的类型,还需要知道关于对象的更多信息,比如该对象拥有的属性和方法以及这个对象的类型的父类是什么。 这就需要Java提供的反射机制(Reflection)。 13.2反射机制13.2.1 Class类 现在存在一个问题:某程序运行时需要A类对象,则根据A的类的字节码文件生成对象,对象的实体存储在堆内存中。那么A类的本身信息是以什么形式存储的? Java编译器把A.java文件编译成A.class文件。当需要使用A类时则把A.class字节码文件加载到内存并生成一个对应的Class类的一个对象c,也就是说A类的信息存储在一个对应的Class类的对象中。当需要生成A类的对象时,c对象生成一个A类对象。也即是说生成类A对象的模版并不是直接是A的真身,而是类A在内存中的一个Class类对象化身。 所以,类的信息是存储在一个对应的Class类的对象中,只要能找到这个对象就可以获取需要的类信息。Object类提供了一个getClass()方法,所以类的对象均可访问getClass()方法来获得一个对应的Class对象,通过该Class即可完成所有反射操作。 例2:下面通过程序StringClass来测试由字符串对象获取String类的信息。 public class StringClass{ public static void main(String[] args)throws Exception{ String s=Hello,Java; System.out.println(s.getClass()); System.out.println(s.getClass().getName()); } } Class类是Java反射机制的关键,可以把Class类理解为保存其他类信息的元类,它是实现Java反射机制的物质保障。 其中,构造器Constructor类、属性Field类和Method类在java.lang.reflect中,这是Java语言为反射机制提供了一个辅助类,用于辅助Class来获取类的信息。 例3:下面通过定义一个A类,A类具有多个属性、方法和构造器
您可能关注的文档
- 新Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 段新娥 贾宗维 2_ chap9.ppt
- 新Java程序设计教程 教学课件 杨晓燕 java9.ppt
- 新Java程序设计教程 教学课件 杨晓燕 Java11.ppt
- 新Java程序设计教程 教学课件 张克军 陆迟 孙海伦 庞丽娜 第10章 网络程序设计.ppt
- 新Java程序设计教程 项目式 教学课件 李桂玲 P1 1 1程序的运行环境.ppt
- 新Java程序设计实例教程教学课件 刘志成 ch05_Java图形用户界面技术.PPT
- 新Java程序设计实例教程教学课件 刘志成 ch07_Java输入输出技术.PPT
- 新Java程序设计实验指导与习题解答 工业和信息化普通高等教育“十二五”规划教材 教学课件 李荣 段新娥 chap9.ppt
- 新Java程序设计实用教程 教学课件 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程.ppt
- 新Java程序设计实用教程 教学课件 耿祥义 张跃平 Java程序设计实用教程_第16章_Java Applet程序.ppt
最近下载
- 无人驾驶车辆轨迹规划技术研究与应用 .pdf VIP
- 2025广东清远市英德市市区学校选调教师117人笔试备考题库及答案解析.docx
- 2025广东清远市英德市市区学校选调教师117人笔试备考试题及答案解析.docx
- 南芯产品规格书SC8886.pdf
- 2024-2025学年初中道德与法治七年级全一册中华民族大团结(同步训练)试题合集.docx VIP
- 2024-2025学年初中道德与法治七年级全一册中华民族大团结(单元测试)试题合集.docx VIP
- 全国建筑设计劳动(工日)定额(2015年度版).pdf
- 2024-2025学年初中道德与法治初中中华民族大团结教学设计合集.docx
- 第五节 中国的河流和湖泊.ppt
- 蔡康永论说话之道(完整版).doc
文档评论(0)