一、学习内容
反射:在运行时动态地获取类的信息,并可以通过该信息来操作类或对象。(能够动态地创建对象、调用方法、访问和修改字段的值)
1.反射核心类
(1)class类:获取class对象(接口)
Class.forName:将字节码文件加载进内存,返回Class对象
类名.class:通过类名的属性class获取
(2)Constructor(构造函数):可以创建对象。
(3)Method(类的方法):通过反射调用普通方法,通过Method类,我们可以调用方法。
(4)Field(类的字段):通过Field类,我们可以访问和修改字段的值。
2.应用场景
1.框架开发:许多Java框架和库使用反射来实现动态加载和配置。例如,Spring框架使用反射来实现依赖注入和AOP编程。
2.动态代理:更加灵活,还可以在运行时创建代理对象,实现方法拦截和增强
3.序列化和反序列化:Java的序列化和反序列化机制使用了反射。通过反射,可以在运行时动态地读取和写入对象的字段。
4.动态代理:Java动态代理机制利用了反射来实现代理对象的动态创建和方法调用的拦截。
5.单元测试:JUnit等单元测试框架使用反射来自动化执行测试用例。通过反射,测试框架可以自动发现和执行类中的测试方法。