版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十三章: 反反射的好第十三章: 反反射的好处: 大大的增强了程序的扩展反射的基本步获取这个 Class 对象,有三种方反射的用反射指定类中的方1第十三章: 反反射的好处: 大大的增强了程序的扩展1、获得 Class 对象,就是获取到指定的名称的字节码文件对象第十三章: 反反射的好处: 大大的增强了程序的扩展1、获得 Class 对象,就是获取到指定的名称的字节码文件对象2、实例化对象,获得类的属性、方法或构造3属性、调用方法、调用构造类2publicpublicStringname;/成员变量 private String address; () /构造方法ln(空参数构造方法(String
2、name) = name;ln(Stringage,S=this.age=this.address=ln(3 /方无参数无返回值的方publicvoidln(无参数无返回值的=this.age=this.address=ln(3 /方无参数无返回值的方publicvoidln(无参数无返回值的方/有参数有返回值的方publicStringmethod(Stringln(method:+returnmethod+publicvoidfunction(Stringln(s+-+num lnpublicStringtoString()
3、3获取这个 Class 对象,有三种方1:通过对象的获取这个 Class 对象,有三种方1:通过对象的 getClass 方法来获取2:类名前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成3:使用的 Class 类中的方法,静态的 forName 4/1. 根据给定的类名来获用于类加ameClassclazz=ame);/ 此对象代/ 2. 如果拿到了对象,不知道是什么类型Object obj = newClassclazz1obj.getClass/ 3. 如果是明确地获得某个类的 Class 对象Class clazz2 =returnname=+name+,age=+age
4、+,address=+1)、反射类的成员方法Classclazz=ClassparamClazz1, 2)、=3)、反射类的属性Field1)、反射类的成员方法Classclazz=ClassparamClazz1, 2)、=3)、反射类的属性Fieldfield=获取了字节码文件对象后,最终都需要创建指定类的对象1,调用空参数的构造方法:使用了 Class 类中的 newInstance()方2,调用带参数的构造方法:先要获取指定参数列表的构造方法对象,然后通过该构造的对象的 newInstance(实际参数) 综上所述,第二种方式,必须要先明确具体的构造方法的参数类型情况下,被反射的类56
5、/ 如何生成获取到字节码文件对象的实例对6/ 如何生成获取到字节码文件对象的实例对象Class clazz = Class.forName(cn.clazz =.class; / 直接获得指定的类型Object obj = new(zhangsan19); / 根据对象获得类型 clazz = obj.getClass();Obect bj = czz.newInanc);/该实例化对象的方法调用就是指定类中的空参数构造方法,给创建对象进行初始化。当指定类中没有空参数构造方法时,该如mthd2publics icvoidmethod_2()throwsExceptionClassclazz=/
6、获取一个带参数的构造器Constructorconstructor=/想要对对象进行初始化,使用构造器的方法 newInstance(); Object obj = constructor.newInstance(zhagnsan,30);/获取所有构造器Constructorconstructorsclazz.getConstructors();/只包含公共的 constructors = clazz.getDeclaredConstructors();/包含私有的 for(Constructor con : constructors) 7/获取类中所有的方法public7/获取类中所有的方
7、法publicicvoidmethod_1()throwsExceptionClassclazz=Methodmethodsclazz.getMethods();/获取的是该类中的公有方法和父for(Method method : methods) publicicvoidmethod_2()throwsExceptionClassclazz=/获取指定名称的方法Methodmethod=nveObjectobj=8method.invoke(obj, 39,hehehe);/执行一个8method.invoke(obj, 39,hehehe);/执行一个方publicicvoidmethod_3()throwsExceptionClassclazz=/想要获取私有方法。必须用 Methodmethod=clazz.getDeclaredMethod(method,/ 私有方法不能直接sible(true);/一般很少用,因为私有就是,所以尽量不publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南永州江永县人民医院、中医医院招聘合同制聘用人员的3人备考题库附参考答案详解(达标题)
- 2026江苏省数据集团有限公司实习生招聘备考题库附答案详解(达标题)
- 2026广西师范大学高层次人才招聘148人备考题库带答案详解(黄金题型)
- 2026山东枣庄市薛城区招聘教师27人备考题库及答案详解(名校卷)
- 2026浙江宁波市镇海区骆驼街道工作人员、行政村后备干部及农村社工招聘10人备考题库含答案详解(培优b卷)
- 2026重庆市璧山区人民医院上半年编外人才招聘41人备考题库附参考答案详解(典型题)
- 2026黑龙江齐齐哈尔市拜泉县乡镇卫生院招聘医学相关专业毕业生5人备考题库附参考答案详解(培优b卷)
- 2026年甘肃省酒泉市敦煌市融媒体中心招聘笔试参考题库及答案解析
- 2026辽宁省交通高等专科学校面向部分高校招聘7人考试备考试题及答案解析
- 2026福建龙岩市新罗法院招聘诉讼费管理员1人考试参考试题及答案解析
- 河南卢氏县等8个国家重点生态功能区产业准入负面清单(试行)
- 泌尿系统及肾上腺试验
- 民盟台州市委会机关遴选工作人员公务员2023年国家公务员考试、考试大纲、历年真题历年高频考点试题附答案解析
- GB/T 325.2-2010包装容器钢桶第2部分:最小总容量208L、210L和216.5L全开口钢桶
- 2022年上海市嘉定区广播电视台(融媒体中心)招聘笔试试题及答案解析
- 2023年广州市高中化学竞赛试卷
- 电动汽车自用桩安装承诺书
- 花的形态和内部结构课件
- 冷却水节能系统方案
- 英国学前教育课件
- 独立基础和筏板基础施工方案
评论
0/150
提交评论