本帖最后由 程澄 于 2014-2-22 17:28 编辑
为什么动态代理对象只能是目标类的上级接口类型。
- List li = (List) Proxy.newProxyInstance(
- ArrayList.class.getClassLoader(),
- ArrayList.class.getInterfaces(),
- new InvocationHandler() {
- public Object invoke(Object proxy, Method method,
- Object[] args) throws Throwable
- {
- System.out.println("proxy");
- Object retVal = method.invoke(new ArrayList(), args);
- return retVal;
- }
- });
复制代码 List li = (List) Proxy.newProxyInstance
只能是List,Collection
我代理的是ArrayList,为什么ArrayList li = (ArrayList) Proxy.newProxyInstance会发生$Proxy0 cannot be cast to java.util.ArrayList
|