反射之动态代理
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:设计模式之单例模式
下一篇:HandlerThread的解析

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月27日 11时03分26秒