lusiyang123 2009-03-05 21:01
浏览 248
已采纳

关于代理模式的问题

[size=large]在java与模式这本书里看到代理模式这章有这么一段代码
public class VectorProxy implements InvocationHandler{

private Object proxyObj;

public VectorProxy(Object obj){
proxyObj=obj;
}
public static Object factory(Object obj){
[color=red] Class cls=obj.getClass();
return
cls.getClass(),
cls.getInterfaces(),
new VectorProxy(obj);
}[/color] public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
System.out.println("before calling "+method);
if(args!=null){
for(int i=0;i<args.length;i++){
System.out.println(args[i]+" ");
}
}
Object o=method.invoke(proxyObj,args);
System.out.println("after calling "+method);
return o;
}
/**

  • @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List v=null; v=(List) factory(new Vector(10)); v.add("new"); v.add("York"); } 可是运行不通在这块出问题 return cls.getClass(), cls.getInterfaces(), new VectorProxy(obj); 望指教[/size]
  • 写回答

1条回答 默认 最新

  • xenocide 2009-03-06 03:04
    关注

    这是作者从网上粘贴来的代码吧?怪不得他,现在出书稿费比以前少多了。

    原本大概应该是:

    return Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), new VectorProxy(obj));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?