Java反射的浅显理解

时间:2022-02-12 13:51:01

一、回顾反射相关的知识

1.在xml文件中使用反射的好处:

1)代码更加灵活,后期维护只需要修改配置文件即可

· 初学者一般习惯于在代码本身上直接修改,后期也可以修改配置文件达到相同的目的

· 修改配置文件相比较修改代码本身,风险更小,更容易维护

· 配置文件也是需要反射实现的

2)有了反射就可以知到任意一个类的所有信息

3)但是反射会消耗较大的内存,一般只在和合适的地方会使用

2.什么是反射?

了解程序编译的内部原理:

创建一个 person.java文件,会在jvm里面生成一个person.class的文件,再运行得出结果。

Java反射的浅显理解

使用反射的前提就是:获取字节码对象(.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时候对于案例程序使用的反射知识 浅显的回顾。并没有解释到实际案例中反射的作用和用法,之后会持续更新~

@author Wyatt_zhai

2021.9.1 20:29