反射之动态代理
发布日期:2021-06-30 20:37:30
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年05月05日 06时46分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
设置Golang的开发环境
2019-04-30
对HTTP/2的部分理解
2019-04-30
Golang 逃逸分析
2019-04-30
golang实现大数据量文件的排序
2019-04-30
golang中的time包
2019-04-30
golang fmt包中的占位符
2019-04-30
Docker下使用Redis
2019-04-30
Redis的主从和集群设置
2019-04-30
对Redis Cluster的理解
2019-04-30
清华师哥丢了个在Github下载量50万+的项目给我,让(附源码下载地址)
2019-04-30
The MASM32 SDK version 10 发布了!
2019-04-30
发布软件:TreeInfo(分层信息管理器)
2019-04-30
c++二分图的最大匹配
2019-04-30
c++点的距离
2019-04-30
c++实现彩色炫酷(?)画面
2019-04-30
c++马拦过河卒
2019-04-30
2019NOIP D4题 加工领奖
2019-04-30
1997年世界黑客大赛获奖作品
2019-04-30
论DEV-C++怎样才能做窗口
2019-04-30