反射的优点和缺点

反射的本质是JVM得到了class对象之后,对class对象进行反编译从而获取到对象的各类信息,当然,这里的反编译并不是真的反编译,因为class对象本身就包含了所有的类信息,不需要反编译,这里是指运行时,通过class对象去动态地获取类相关地信息。

反射的优点:

1、提高程序的灵活性。反射可以让我们在程序运行期间获取关于对象与类的信息,还能改变对象与类的行为,比如一个private的字段,通常情况我们无法获取,但是通过反射可以获取。

2、降低耦合性,提升复用率。我们在运行的时候不必明确指定具体的类,可以让我们在程序运行时再确定,比如动态代理。

反射的缺点:

1、性能不如直接调用。反射犹豫需要动态加载类,获取类的各类信息,安全检查等额外开销,并且相对于直接调用中编译器做了很多的优化,反射是没有的,因此导致反射的性能不如直接调用。

2、反射的代码可读性下降。反射的动态性会妨碍阅读代码,并且在异常处理方法需要用更多方式去处理;反射代码缺乏类型检查,是否发生类型问题只有到了运行时才能发现。

3、反射可以绕过final这类限制访问的属性或者方法,可能破坏代码本身的抽象性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值