浅谈java反射的优缺点及应用场景

发布时间 2023-07-05 15:07:13作者: 老屋上的仙人掌

优点:
1.增加程序的灵活性,可以在运行的过程中动态对类进行修改和操作
2.提高代码的复用率,比如动态代理、spring管理bean,就是用到反射来实现的
3.可以在运行时轻松获取任意一个类的方法、属性,并且还能通过反射进行动态调用

缺点:
1.反射会涉及到动态类型的解析,所以jvm无法对这些代码进行优化,导致性能要比非反射调用更低
2.使用反射以后,代码的可读性会下降,程序人员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。
3.反射可以绕过一些限制访问的属性或者方法,可能会导致破坏代码本身的抽象性

4.使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如Applet,那么这就是个问题了。

应用场景

Spring的 IOC 容器,反射+工厂模式 使工厂类更稳定,JDBC连接数据库时加载驱动类