概念
反射机制指的是程序在运行时能够获取自身的信息,在java中,只要给定类的名字,那么就可以通过反射获取类的所有属性和方法。
反射的好与坏
反射的好处就是可以提升程序的灵活性和扩展性,比较容易在运行期干很多事情。
但是也带来了一些问题:
- 代码的可读性和可维护性
- 反射执行代码的性能低
- 反射破坏了封装性
为什么反射慢?
为什么反射慢呢?主要由于以下原因:
- 由于反射涉及到动态解析类型,因此不能执行某些Java虚拟机优化例如JIT;
- 在反射时,参数需要包装成Object[]类型,但是真正方法执行的时候,有需要拆包成真正的类型,这些动作不仅耗时,而且过程中产生很多对象,对像一多容易导致GC.
- 反射调用方法时会从方法数组中遍历查找,并且会检查可见性。
反射的应用场景
- 动态代理
- BeanUtils的属性拷贝
- ORM框架
- RPC框架
- Spring的IOC/DI