- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java类加载器与的反射
1 类的加载类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载 就是指将class文件读入内存,并为之创建一个Class对象。 任何类被使用时系统都会建立一个Class对象。 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据中的符号引用替换为直接引用 初始化 就是我们以前讲过的初始化步骤 2 类初始化时机创建类的实例 访问类的静态变量,或者为静态变量赋值 调用类的静态方法 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类 3 类加载器类加载器 负责将.class文件加载到内在中,并为之生成对应的Class对象。 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行。 类加载器的组成 Bootstrap ClassLoader 根类加载器 Extension ClassLoader 扩展类加载器 Sysetm ClassLoader 系统类加载器 4 类加载器的作用Bootstrap ClassLoader 根类加载器 也被称为引导类加载器,负责Java核心类的加载 比如System,String等。在JDK中JRE的lib目录下rt.jar文件中 Extension ClassLoader 扩展类加载器 负责JRE的扩展目录中jar包的加载。 在JDK中JRE的lib目录下ext目录 Sysetm ClassLoader 系统类加载器 负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径 通过这些描述我们就可以知道我们常用的东西的加载都是由谁来完成的。 到目前为止我们已经知道把class文件加载到内存了,那么,如果我们仅仅站在这些class文件的角度,我们如何来使用这些class文件中的内容呢?这就是我们反射要研究的内容。5 反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. A:三种获取Class对象的方式 1:Person p = new Person(); Class c = p.getClass(); 2:Class c2 = Person.class; 任意数据类型都具备一个class静态属性,看上去要比第一种方式简单.3:将类名作为字符串传递给Class类中的静态方法forName即可 Class c3 = Class.forName(Person); 4:第三种和前两种的区别前两种你必须明确Person类型. 后面是你我这种类型的字符串就行.这种扩展更强.我不需要知道你的类.我只提供字符串,按照配置文件加载就可以了 6 通过反射获取构造方法并使用获取构造方法 getConstructors getDeclaredConstructors 创建对象 newInstance()con.newInstance(“zhangsan, 20); 7 通过反射获取成员变量并使用获取所有成员 getFields,getDeclaredFields 获取单个成员 getField,getDeclaredField 修改成员的值 set(Object obj,Object value)?将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 通过反射获取成员方法并使用获取所有方法 getMethods getDeclaredMethods 获取单个方法 getMethod getDeclaredMethod 暴力访问 method.setAccessible(true);8 反射应用举例通过配置文件运行类中的方法 我给你ArrayListInteger的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢? 写一个方法, public void setProperty(Object obj, String propertyName, Object value){}, 此方法可将obj对象中名为propertyName的属性的值设置为value。 9动态代理动态代理 代理:本来应该自己做的事情,却请了别人来做,被请的人就是代理对象。 举例:春季回家买票让人代买 动态代理:在程序运行过程中产
您可能关注的文档
最近下载
- 志愿者招募方案.docx VIP
- 迅达电梯7000中文电路图.pdf
- 消防工程施工合同范本XFHT001.doc VIP
- ISO-IEC 27701.2-2024(DIS) 信息安全、网络安全和隐私保护— 隐私信息信息管理体系 - 要求和指南(雷泽佳译2024).pdf VIP
- 信息安全-网络安全和隐私保护-信息安全管理体系-要求和使用指南(整合版-2024雷泽佳).docx VIP
- QYX 06.68-2015 塑料件热铆、热熔焊接技术规范.pdf VIP
- 信息安全、网络安全和隐私保护——信息安全控制风险清单(雷泽佳编制2024A0).docx VIP
- 信息安全典型风险(威胁)清单【类别、描述、后果及控制措施示例】(雷泽佳编制2024A0).docx VIP
- 信息安全风险清单之2:信息安全典型脆弱性清单——脆弱性示例、涵义、事件类别、后果和安全控制措施(雷泽佳编制2024A0).docx VIP
- 5G-R承载CTCS-3级列控数据传输研究.pdf VIP
文档评论(0)