ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反射

2022-05-17 15:00:48  阅读:111  来源: 互联网

标签:反射 String 配置文件 对象 Object 获取 Class


反射 反射:将类的各个组成部分封装成其他对象,这就是反射机制 好处: 1.可以再程序运行过程过程中,操作这些对象 2.可以理解,提高程序的可扩展性 获取Class对象的方式 1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象 多用于配置文件,将类名定义在配置文件中,读取文件,加载类 2.类名.class:通过类名的属性class获取 多用于参数的传递 3.对象.getClass():getClaass()方法在object类中定义着 多用于对象的获取字节码的方式 结论: 同一个字节码(*.class)在一次程序运行的过程中,只会加载一次,不论通过哪一种Class对象都是同一个     Class对象功能 获取功能: 1.获取成员变量 Field[] getFields():获取所有的public修饰的成员变量 Field getField(String name):获取指定的public修饰的成员变量 Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符 Field getDeclaredField(String name) 获取所有的成员变量,不考虑修饰符 2.获取构造方法 Constructor[] getConstructors() Constructor getConstructor(类 ...paremeterTypes) Constructor[] getDeclaredConstructors()   3.获取成员方法 Method[] getMethods() 获取指定名的方法 无参 Method getMethod(String name,类...parameterTypes) 获取指定名的方法 有参   4.获取类名 String getNama()   Field 成员变量 操作: 1.设置值 void set(Object obj,Object value) 2.获取值 get(Object obj) 3.忽略访问权限修饰符的安全检查 setAccessible( true);   Constructor:构造方法 创建对象: T newInstance(Object.....initargs) 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法   Method:方法对象 执行方法 Object invoke(Object obj,object...,args) 获取方法名称 String getName 案例: 需求:写一个“框架”,不改变类的任何代码的前提下,可以帮我们创建任何类对象,并且执行其中任意的方法 实现: 1.配置文件 2.反射 步骤: 1.讲需求创建的对象的全类名和需要执行的方法定义在配置文件中 2.在程序中加载读取配置文件 3.使用反射技术来加载类文件进内存 4.创建对象 5.执行方法  

标签:反射,String,配置文件,对象,Object,获取,Class
来源: https://www.cnblogs.com/lihao-manongyimei/p/16280819.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有