1. 什么是反射?
反射是一种在程序运行时检查和操作类的机制,通过获取类的信息并动态调用方法、创建对象等。这种机制让程序能够在运行时根据需要动态地获取和操作类的结构和成员。
- 获取 Class 对象 程序通过类的全限定名、对象的getClass()方法或 .Class 语法来获取对应的Class对象。
- 查询类信息 通过Class对象获取类的信息,包括类名、包名、父类、实现的接口、构造函数、方法、字段等。
- 动态创建对象 通过 Class 对象的 newInstance ()方法调用类的默认构造函数来创建对象,或者通过 Constructor 对象调用类的其他构造函数来创建对象。
- 动态调用方法 通过 Method 对象调用类的方法,传递参数并获取返回值。
- 动态访问字段 通过 Field 对象获取和设置类的字段值。
整个流程就是通过获取 Class 对象,然后根据需要动态地调用类的方法、创建对象、访问字段等操作,实现了对类的动态操作和调用。
2.公共字段自动填充 (涉及:枚举、注解、AOP、反射)
如果都按照上述的操作方式来处理这些公共字段,需要在每一个业务方法中进行操作,编码相对冗余、繁琐、那能不能对于这些公共字段在某个地方统一处理,来简化开发呢?
答案是可以的,我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。
实现步骤: