public static Object newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)
参数1:类加载器:将类加载到内存中形成class文件
动态创建一个类,相当于创建一个java文件,这个类不在内存,我们需要将它加载到内存
固定格式:当前类.class.getClassLoader();
参数2:动态创建的类不知道方法,接口中有需要的方法名称
固定格式:子类的实例对象.getClass().getInterfaces();
通过子类的字节码对象,获得所有的接口,相当于知道了子类实现过的所有方法
参数3:执行处理类
动态创建的类只知道接口,方法名称 但是没有实现 执行处理类就是实现
invoke()
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return null;
}
代理类每调用一次方法,执行处理类中的invoke方法被执行一次,同时,将传入三个参数
参数1:代理的对象
参数2:当前被执行的方法对象
参数3:当前被执行对象中的参数 如果有,以数组拼接 如果没有,就是null