你会如何从代理中公开实现类型(而不是调用处理程序!)类?

时间:2018-02-18 08:30:39

标签: java dynamic-proxy

无论是对象的实际对象还是代理,您如何公开对象的实现类类型?

以下是问题https://github.com/AsyncHttpClient/async-http-client/issues/1523

的示例

我以为我可以在代理中拦截getClass电话,但后来我意识到:

1)代理仅拦截对作为Proxy.newProxyInstance参数定义的接口的调用; 2)我无法覆盖界面中的getClass,因为它是最终的。

我当然可以将自己的getImplementingClass添加到我的界面,并在任何地方使用它而不是instanceof,但它看起来很糟糕。

我可以知道如何获取调用处理程序的类。但它(ReleasePermitOnComplete)与实现类(WebSocketUpgradeHandler)不同。因此,这个问题比关于动态代理如何工作的简单问题更具设计性问题。

想法?

0 个答案:

没有答案