public static Object newProxyInstance(
ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
通过JDK源码可以看到newProxyInstance方法要求我们填三个参数,分别是:
1.类加载器
2.接口
3.动态代理
再来看详细的方法定义:
Objects.requireNonNull(h);
//要求代理对象不能是null
final Class<?>[] intfs = interfaces.clone();
//克隆接口
final SecurityManager sm = System.getSecurityManager();
//获得安全管理权限
checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
}
//检查代理权限
//获得代理类
try {
if (sm != null) {
checkNewProxyPermission(Reflection.getCallerClass(), cl);
}
final Constructor<?> cons = cl.getConstructor(constructorParams);
//获得代理类的构造函数
//它返回的是 :getR