这是我面临的一个问题。
我正在写一个插件。有一个名为SystemObject的接口和一个默认的 getter。
public class MyPlugin extends Plugin {
@override
public SystemObject getSystemObject() {
return super.getSystemObject();
}
}
SystemObject 接口有一个名为 getScreenSize() 的方法,我想代理或拦截它。当我创建一个代理类,或者只是自己实现这个 SystemObject 接口时,我得到一个类转换异常。
这是因为 getSystemObject (插件系统的一部分)的调用者在他们的代码中有这个(通过逆向工程找到):
private void foo() {
SystemObjectImpl impl = (SystemObjectImpl)plugin.getSystemObject();
}
我的问题是:有什么方法可以代理 SystemObject 接口上的调用?
我尝试实现接口并使用 java 反射代理调用无济于事。不幸的是,我不负责运行java进程,所以我不能使用代理。
干杯!