-
Java反射的浅显理解
一、回顾反射相关的知识
1.在xml文件中使用反射的好处:
1)代码更加灵活,后期维护只需要修改配置文件即可
· 初学者一般习惯于在代码本身上直接修改,后期也可以修改配置文件达到相同的目的
· 修改配置文件相比较修改代码本身,风险更小,更容易维护
· 配置文件也是需要反射实现的
2)有了反射就可以知到任意一个类的所有信息
3)但是反射会消耗较大的内存,一般只在和合适的地方会使用
2.什么是反射?
了解程序编译的内部原理:
创建一个 person.java文件,会在jvm里面生成一个person.class的文件,再运行得出结果。
使用反射的前提就是:获取字节码对象(.class),三种方式
1)Object类的getClass()方法,判断两个对象是否是同一个字节码文件
Class<?> fr1 = Fruit.getClass();
2)静态属性class,锁对象
Class<fruit> fr2 = Fruit.class;
3)Class类中静态方法forName(),获得动态加载类
Class<fruit> fr3 = Class.forName("com.qf.demo.Fruit");
这样就可以继续使用字节码对象获取类的相关信息了
以3)为例:
Constructor constructor = fr3.getconstructor
实例化对象
Fruit fruit = (fruit)constructor.newInstance()
最后根据需求访问构造函数,成员变量,成员方法等等之类
总结: 反射是框架实现的底层原理,为编码带来了极大的便利,但由于作者我本身为小白一个,无法切身感受。需要解释的是:文中举例为是为了解释反射而产生的,实际开发中使用的更加巧妙,也很难一下就理解,需要反复咀嚼,这次是我在学习mybatis时候对于案例程序使用的反射知识 浅显的回顾。并没有解释到实际案例中反射的作用和用法,之后会持续更新~
出处:https://www.cnblogs.com/Wyatt-zhai/p/15216319.html