反射-概述和获取字节码class对象的三种方式
反射-概述
反射:框架设计的灵魂
框架:办成平软件,可以在框架的基础上进行软件开发,简化编码
反射:将类的各个组成部分封装为其他对象,这就是反射机制
好处:
1.可以在程序运行过程中,操作这些对象
2.可以解耦,提高程序的可扩展性好
反射-获取字节码class对象的三种方式
public static void main(String[] args) throws Exception { //获取Person的Class对象 Class personClass =Person.class; //1.Fied[] getFields()获取所有public修饰得到成员变量 Field[] field = personClass.getFields(); for (Field field1 : field) { System.out.println(field1); } System.out.println("--------------------"); //2.Field getField(String name) Field a = personClass.getField("a"); //获取成员变量a的值 Person p = new Person(); Object o = a.get(p); System.out.println(o); //设置a的值 a.set(p,"张三"); System.out.println(p); System.out.println("=================="); //Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符 Field[] declaredFields = personClass.getDeclaredFields(); for (Field declaredField : declaredFields) { System.out.println(declaredField); } //Field getDeclaredField(String name) Field d = personClass.getDeclaredField("d"); //忽略访问权限修饰符的安全检查 //暴力反射 d.setAccessible(true); Object o1 = d.get(p); System.out.println(o1); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)