反射之动态代理
发布日期:2021-06-30 20:37:30
浏览次数:3
分类:技术文章
本文共 1275 字,大约阅读时间需要 4 分钟。
此篇幅是反射的最后一章节,动态代理,如果熟悉Android开发且使用过Retrofit框架,应该就知道Retrofit框架实现的核心便是动态代理。
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;//接口:核心主题interface Subject{ void action();}//被代理的类 (真正要执行的类)class RealSubject implements Subject{ @Override public void action() { System.out.println("我是被代理的类"); }}//实现动态代理的类---(代理类)class MyInvocationHandler implements InvocationHandler{ Object obj; //实现Subject接口的被代理类对象的声明 public Object bind(Object obj){ //给被代理类对象赋值 this.obj = obj; //返回一个代理类对象 return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this); } //当通过代理类对象发起调用被重写方法时调用 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return method.invoke(obj,args); }}/** * 动态代理模式 */public class DynamicProxy { public static void main(String[] args){ //实例化 “被代理的类” RealSubject realSubject = new RealSubject(); //实例化 “代理类” MyInvocationHandler myInvocationHandler = new MyInvocationHandler(); //代理类对象“绑定”被代理的类对象 Subject subject = (Subject) myInvocationHandler.bind(realSubject); //调用方法 subject.action(); }}
好了,有关反射系列的知识介绍就到此段落了。
转载地址:https://liuqiang.blog.csdn.net/article/details/79817875 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月27日 11时03分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
My notes about backup to ubuntu
2019-04-30
linux 查看分区和文件大小
2019-04-30
IP TCP UDP 结构
2019-04-30
Not using PCAP_FRAMES 解释(snort中)
2019-04-30
快慢指针模板
2019-04-30
有关反转链表模板(汇总)
2019-04-30
c++穷举法求最大公约数和最小公倍数的实例中如何调用max和min函数
2019-04-30
Linux 基于端口的虚拟主机配置
2019-04-30
c语言实现二叉树(二叉链表)非递归后序遍历
2019-04-30
二叉树(二叉链表)求树的宽度,即具有结点树最多的那一层的结点个数
2019-04-30
静态链表实现Josephus(约瑟夫环问题)
2019-04-30
Intel SGX开发环境配置 linux 16.04
2019-04-30
linux 16.04 更换国内清华源
2019-04-30
qemu在ubuntu16.04下安装
2019-04-30
cmake安装
2019-04-30
linux安装llvm
2019-04-30
llvm安装,精简,用预编译进行安装
2019-04-30
riscv64 编译环境 ./build.sh失效如何解决 各部件分步安装靠谱
2019-04-30
eclipse小技巧:插件
2019-04-30
springBoot的.yml配置文件
2019-04-30