代码如下:
public class ProxyFactory {
// 维护目标对象
private Object target;
public ProxyFactory(Object target) {
this.target = target;
}
// 给目标对象生成一个代理对象
public Object getProxyInstance() {
/**
* public static Object newProxyInstance(ClassLoader loader,
* Class<?>[] interfaces,
* InvocationHandler h)
* ClassLoader loader:指定当前目标对象使用的类加载器
* Class<?>[] interfaces:目标对象实现的接口类型,使用泛型方法确认类型
* InvocationHandler h:事件处理,执行目标对象的方法时,会触发事件处理器方法,会把当前执行的目标对象方法作为参数传入
*/
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),
(proxy, method, args) -> {
System.out.println("jdk代理开始");
// 反射机制调用目标方法
return method.invoke(target, args);
}
);
}
}