java动态代理例子

 

 

JDK 动态代理:

 

  一,定义接口

public interface IPoxyTest {

    String eat();
    
    String sleep();
}

二,定义实现

public class PoxyTest implements IPoxyTest{
    @Override
    public String eat() {
        System.out.println("吃饭中。。。");
        return "我要吃饭";
    }

    @Override
    public String sleep() {
        System.out.println("睡觉中。。。");
        return "我要睡觉";
    }
}

三,测试 

class test{
    public static void main(String[] args) {
        //需要代理的 实例
        IPoxyTest iPoxyTest = new PoxyTest();
        IPoxyTest iPoxyTest1 =(IPoxyTest) Proxy.newProxyInstance(iPoxyTest.getClass().getClassLoader(), iPoxyTest.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                Object result;
                if("eat".equals(method.getName())){
                    System.out.println("吃饭前:"+method.getName());
                    //执行的方法
                    result = method.invoke(iPoxyTest, args);
                    System.out.println("吃饭后");
                }else {
                    System.out.println("睡觉前===》:"+method.getName());
                    //执行的方法
                    result = method.invoke(iPoxyTest, args);
                    System.out.println("睡觉后===》");
                }

                return result;
            }
        });
        iPoxyTest1.eat();

        iPoxyTest1.sleep();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值