码迷,mamicode.com
首页 > 其他好文 > 详细

jdk动态代理详解 二 代理失效

时间:2021-03-08 14:14:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:结果   ice   ade   fun   失效   new   rgs   main   pack   

在jdk动态代理详解 一 中,我们把代码做一点修改,在fun02中调用fun01

package my.annotation.learn;

public class TargetClass implements ServiceInf{

    @Override
    public void fun01() {
        
        System.out.println("TargetClass->fun01()");
    }

    @Override
    public void fun02() {
        System.out.println("TargetClass->fun02()");
        fun01();//调用fun01,方法内部的方法调用是通过this指针,也就是原对象进行调用
    }
    
    

}

在Demo的测试类中调用fun02

package my.annotation.learn;

import java.lang.reflect.Proxy;

public class Demo {

    public static void main(String[] args) {
        TargetClass target=new TargetClass();
        ServiceInf proxy =(ServiceInf) Proxy.newProxyInstance(Demo.class.getClassLoader(), 
                new Class<?>[] {ServiceInf.class}, new MyInvocationHandler(target));
        proxy.fun02();
    }

}

运行结果如下:

发现fun02方法走了代理逻辑,fun01没有走代理逻辑

代理方法开始执行
com.sun.proxy.$Proxy0
public abstract void my.annotation.learn.ServiceInf.fun02()
TargetClass->fun02()
TargetClass->fun01()
代理方法开始结束

原因就是 :方法内部的方法调用是通过this指针,也就是原对象进行调用,要走代理逻辑,必须是代理对象去调用方法。

jdk动态代理详解 二 代理失效

标签:结果   ice   ade   fun   失效   new   rgs   main   pack   

原文地址:https://www.cnblogs.com/cplinux/p/14495766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!