修改了一下DynamicProxy类
public class DynamicProxy implements InvocationHandler{
private Resource resource;
public Resource create() {
this.resource = new ConcreteResource();
return (Resource) Proxy.newProxyInstance
(resource.getClass().getClassLoader(), resource.getClass().getInterfaces(), this);
}
public Object invoke(Object obj, Method method, Object[] args) throws Throwable {
Object o = null;
try {
if(method.getName().equals("operationA")) {
System.out.println("OperationA in Proxy");
} else {
o = method.invoke(resource, args);
}
} catch (Exception e) {
e.printStackTrace();
}
return o;
}
}
@duanxp
谢谢您的回复。 我觉得两种代码写法都是可行的,而且结果也应该一样。但不可否认,您的代码会来得更加清晰和直接。
o = method.invoke(obj, args);
错了,
应该是
o = method.invoke(resource, args);