为了账号安全,请及时绑定邮箱和手机立即绑定

Java_动态代理

标签:
Java

package staticProxy;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; // 实现了接口的被代理类的对象的声明    // 1.给被代理类的对象实例化 2.返回一个代理类的对象    public Object blind(Object object) {        this.obj = object;        return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);    }    //当通过代理类的对象发起对呗重写的方法调用时,都会转换为对如下的invoke方法的调用    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        Object returnVal = method.invoke(obj, args);        return returnVal;    }}public class DynamicProxy {    public static void main(String[] args) {        //1.被代理类的对象        RealSubject real = new RealSubject();        //2.创建了一个实现了InvocationHndler接口的类的对象        MyInvocationHandler handler = new MyInvocationHandler();        //3.调用blind()方法,动态的返回一个同样实现了real所在类实现的接口Subject的代理类对象        Object obj = handler.blind(real);        Subject sub = (Subject) obj;//此时的sub就是代理类的对象        sub.action();    }}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消