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

Geo*_*Geo 3 java dynamic-proxy

我尝试使用Sun在其“ 代理使用情况”页面上发布的代码 ,并且尝试使用DebugProxy打印调用的方法。问题是,我要为其创建代理的对象需要有一个参数。如果尝试使用构造函数的参数创建代理,则会收到以下错误:

线程“主”中的异常java.lang.ClassCastException:$ Proxy0无法转换为myPackage.myClass

我创建了这样的代理:


MyClass mc = (MyClass) DebugProxy.newInstance(new MyClass(props));
Run Code Online (Sandbox Code Playgroud)

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

ska*_*man 5

JDK生成的代理与您要代理的对象的类类型不同。相反,它实现了目标对象的相同接口。您需要转换为这些接口类型之一。

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