无论是对象的实际对象还是代理,您如何公开对象的实现类类型?
以下是问题https://github.com/AsyncHttpClient/async-http-client/issues/1523
的示例我以为我可以在代理中拦截getClass
电话,但后来我意识到:
1)代理仅拦截对作为Proxy.newProxyInstance
参数定义的接口的调用;
2)我无法覆盖界面中的getClass
,因为它是最终的。
我当然可以将自己的getImplementingClass
添加到我的界面,并在任何地方使用它而不是instanceof
,但它看起来很糟糕。
我可以知道如何获取调用处理程序的类。但它(ReleasePermitOnComplete)与实现类(WebSocketUpgradeHandler)不同。因此,这个问题比关于动态代理如何工作的简单问题更具设计性问题。
想法?