输出结果:
文章插图
InvocationHandler 接口 和 invoke 方法介绍
InvokationHandler
是Java 反射包里面的一个接口通过用户类来实现 , 来激发一个动态代理类的方法 。它只有一个方法:
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable;
- Object:实现方法的代理对象
- Method:代理实例激发的方法,Porxy参数中的接口方法
- Object[]:传递给方法的一系列参数
静态代理和动态代理的区别
静态代理:
在jvm运行之前就已经获取到代理类的class信息 。代理类需要开发者自己写好,即开发者需要自己实现代理类的.java文件,也就是说在项目编译之前就需要存在代理类的.java文件 , 然后在编译阶段就可以将代理类的.java文件编译成.class文件,从而得到代理类的class信息;
动态代理:
不需要开发人员自己实现代理类的,也就是项目代码中是不存在代理类的.java文件的 , 既然代理类未由开发者实现,那么程序经过编译之后肯定也不会有代理类的.class文件 。也就是说经过编译之后程序未启动运行之前,关于代理类的信息我们一无所知,它是在程序运行过程中需要用到的时候才会由jvm动态生成的,而且生成之后也只存在于内存中,不会写到磁盘保存成.class文件,更加不会保存为.java文件;
总之一句话就是静态代理是需要开发人员自己实现代理类的逻辑的,且代理类的class信息是在程序运行之前就已经可以获取到的了,而动态代理是不需要开发人员自己实现代理类的,
【一篇文章让你搞懂Java中的静态代理和动态代理】
推荐阅读
- oppo红包提醒怎么设置(oppo手机红包提醒)
- 学生怎么在家里赚钱(女生大学在家怎么赚钱)
- 学生怎样能快速赚钱(学生捡破烂赚钱)
- 苹果如何下载软件(苹果手机咋下软件)
- ipad iphone如何免费下载软件
- 苹果手机如何下载应用app(苹果怎么禁止下载app)
- 最强大脑-数独怎么玩(数独必背十大口诀)
- 九宫格数独怎么玩(9宫格万能口诀)
- 数独怎么玩(数独小游戏)
- 数独游戏怎么玩(7-12岁数独游戏)