编程语言
首页 > 编程语言> > java – 如何在带参数的构造函数上使用动态代理?

java – 如何在带参数的构造函数上使用动态代理?

作者:互联网

我试图使用他们在Proxy usage page上发布的Sun代码,我尝试使用DebugProxy来打印调用哪个方法.问题是,我正在创建代理的对象需要有一个参数.如果我尝试使用构造函数的参数创建代理,我收到以下错误:

Exception in thread "main" java.lang.ClassCastException: $Proxy0 cannot be cast to myPackage.myClass

我创建了这样的代理:


MyClass mc = (MyClass) DebugProxy.newInstance(new MyClass(props));

如何创建代理实例,仍然可以调用正确的构造函数?

解决方法:

JDK生成的代理与您要代理的对象的类类型不同.相反,它实现了目标对象的相同接口.您需要转换为其中一种接口类型.

如果您查看链接到的页面上的示例,它会转换为Foo,而不是FooImpl.

标签:dynamic-proxy,java
来源: https://codeday.me/bug/20190726/1547957.html