Java动态代理实例

创建需要被代理的接口并实现

package com.example.javase;

/**
 * @Description: Proxy 代理必须要接口 (被代理的类)
 * @author: YZD
 * @Date: 2020-02-10 20:45
 * @Version: 1.0
 */
public interface ProxyInterface {
    public void show();
}

class ProxyInterfaceIml implements ProxyInterface {

    @Override
    public void show() {
        System.out.println(this.getClass().getName());
    }
}

创建代理类 并通过main方法测试

package com.example.javase;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @Description: Java动态代理类
 * @author: YZD
 * @Date: 2020-02-10 17:09
 * @Version: 1.0
 */
public class day09 implements InvocationHandler {
    /**
     * 动态代理:Proxy
     * 专门完成代理的操作类,是所有动态代理的父类,
     * 通过此类为一或多个接口实现动态生成实现类
     */

    // 代理的对象
    Object object;

    public day09(Object object) {
        this.object = object;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("方法执行前。。");
        Object obj = method.invoke(this.object, null);
        System.out.println("方法执行后。。");
        return obj;
    }

    public static void main(String[] args) {

        ProxyInterface proxyInterface = new ProxyInterfaceIml();
        InvocationHandler invocationHandler = new day09(proxyInterface);
        //参数:代理的类加载器 代理对象的接口  代理的对象
        //返回值:代理成功后的对象
        //通过返回的对象 在执行操作

        // Proxy.newProxyInstance 这种代理必须要 接口
        ProxyInterface p = (ProxyInterface) Proxy.newProxyInstance(invocationHandler.getClass().getClassLoader(), proxyInterface.getClass().getInterfaces(), invocationHandler);
        p.show();
    }
}

结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xerNrD5Y-1581339981235)(![在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳宗德

您的鼓励是我进步的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值