美文网首页
Jdk动态代理

Jdk动态代理

作者: Niko_b4fa | 来源:发表于2017-10-10 14:22 被阅读0次

    1.被代理类必须实现一个接口,任意接口

    public class Bus implements Runnable{}
    

    2.InvocationHandler接口

    每一个动态代理类都要实现一个InvocationHandler接口,该类用来对象代理对象进行方法的增强

    public class TimeInvocation implements InvocationHandler{
    private Object target;//被代理对象
    public TimeInvocation(Object target){
        this.target=target;
    }
    }
    

    3.在动态待类中invoke()方法调用被代理类的方法

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Long time1=System.currentTimeMillis();
        //调用被代理对象方法
        method.invoke(obj, args);
        Long time2=System.currentTimeMillis();
        System.out.println(time2-time1);
        return null;
    }
    

    4.通过Proxy.newProxyInstance(ClasLoader, Class, InvovationHandler)创建代理类对象

    5.调用代理对象的方法

        Car car=new Car();
        //Bus bus=new Bus();
        imeHander hander=new TimeHander(car);//将被代理对象传入传力类中
        Class class1=car.getClass();
        Irun i=(Irun)Proxy.newProxyInstance(class1.getClassLoader(), class1.getInterfaces(), hander);
        i.run();

    相关文章

      网友评论

          本文标题:Jdk动态代理

          本文链接:https://www.haomeiwen.com/subject/bomvyxtx.html