Proxy.newProxyInstance(classLoader, new Class[]{interface1.class,interface2.class}, handler);
Proxy.newProxyInstance(classLoader, new Class[]{interface1.class,interface2.class}, handler);
不会创建新的代理类
Proxy.newProxyInstance(classLoader, new Class[]{interface2.class,interface1.class}, handler);
Proxy.newProxyInstance(classLoader, new Class[]{interface1.class,interface2.class}, handler);
会创建两个不同的代理类
分析:
查看Proxy.newProxyInstance源码,发现创建的代理类会存入缓存,Map<List<String>, Object> cache;
而作为key的是一个List<String>,这个list是由new Class[]{interface2.class,interface1.class}的
接口数组的名称转换来的,而key的异同则是比较其hashCode,所以造成了上述现象。