利用Java的反射技术,在运行时创建一个实现某些给定接口的新类以及其实例,代理的是接口,运行时才知道具体的实现。
public static Object newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)
throws IllegalArgumentException
loader: 用哪个类加载器去加载代理对象。
interfaces: 动态代理类需要实现的接口。
h: 动态代理方法在执行时,会调用h里面的invoke方法。
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object res = method.invoke(vehical, args);
return res;
}
proxy: 代理对象。
method:调用的方法。
args:方法中的参数。