Jdk动态代理

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动态代理)