Java内省与反射

反射机制

反射机制的优点:

可以实现动态的创建对象和编译,使代码更加灵活多变,比如动态代理的实现,就是通过反射来实现被代理方法的调用,比如mybatis查询生成的entity,数据就是通过反射set到entity对象的。

反射机制的缺点:

对性能的影响。使用反射机制基本上是一种解释操纵,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。

内省机制

什么是内省机制(或者说使用内省机制的好处):

  • 内省的出现有利于了对类对象属性的操作,减少了代码的数量,提高代码的可读性。

  • 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。

内省机制与反射的区别:

反射式在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。内省机制是通过反射来实现的,BeanInfo用来暴露一个bean的属性、方法和事件,以后我们就可以操纵该JavaBean的属性。

内省技术操作javabean更简单,方便,比如Apache提供的BeanUtils就是和内省技术的原理差不多,而且内省是基于反射的,只是在反射的基础之上封装了,很易于我们操作。

满足内审机制的条件:

  • 是一个标准的Java Bean对象
  • 实现java.io.Serializable 接口
  • 提供无参数的构造器
  • 提供getter 和 setter方法访问它的属性

内省机制的操作方式:

  • 通过Introspector类获得Bean对象的 BeanInfo

  • 然后通过 BeanInfo 来获取属性的描述器(PropertyDescriptor)

  • 通过这个属性描述器就可以获取某个属性对应的 getter/setter方法

  • 然后通过反射机制来调用这些方法

  • 通过PropertyDescriptor来操作Bean对象

参考:
https://www.codeleading.com/article/88343787971/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值