您可以通过通常的方式提供参考。一种常见的模式是创建一个最终变量来引用目标,并将匿名实现传递
InvocationTargetHandler给该
Proxy.newProxyInstance方法,如下所示:
final Object myObject = ;final Object proxy = Proxy.newProxyInstance( classLoader, new Class[] { }, new InvocationTargetHandler() { public Object invoke(Object proxy, Method method, Object[] args) { return method.invoke(myObject, args); }});这个示例是世界上最没有意义的代理,因为它无需任何操作即可修补所有方法调用,但是您可以
InvocationTargetHandler使用各种有趣的东西填充。
有时,由于代理对象不构成合同的一部分,API可能会有点笨拙,但是JDK的作者希望为代理类提供可能性,而无需支持具体的实现。他们这样做是非常有用的……单元测试中的模拟对象就是一个很好的例子。



