day05Java核心技术36讲(谈谈Java反射机制、动态代理是基于什么原理)

一、反射机制
反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类和对象,比如获取某个对象的定义获取类声明的属性或方法调用方法或者构造对象,甚至可以运行时修改类的定义
反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的“包名+类名.class”得到
反射的功能:
①在运行时能判断任意一个对象所属的类
②在运行时能构造任意一个类的对象
③在运行时判断任意一个类所具有的成员变量和方法
④在运行时调用任意一个对象的方法
二、动态代理
动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制。首先,它是一个代理机制。代理可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成。
三、反射机制及其演进
反射提供的AccessibleObject.setAccessible(boolean flag),它的子类也大都重写了这个方法,这里所谓的accessible可以理解成修饰成员的public、protected、private,这意味着我们可以在运行时修改成员访问限制
四、JDK Proxy的优势
最小化依赖关系,减少依赖意味着简化开发和维护,JDK本身的支持,可能比cglib更加可靠;
平滑进行JDK版本升级,而字节码类库通常需要进行更新以保证在新版Java上能够使用;
代码实现简单
五、基于类似cglib框架的优势
①有的时候调用目标可能不便实现额外接口,从某种角度看,限定调用者实现接口是有些侵入性的实践,类似cglib动态代理就没有这种限制;
只操作我们关心的类,而不必为其他相关类增加工作量;
高性能
六、AOP(面向切面编程)
AOP通过(动态)代理机制可以让开发者从这些繁琐事项中抽身出来,大幅度提高了代码的抽象程度和复用度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值