0

这是我面临的一个问题。

我正在写一个插件。有一个名为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进程,所以我不能使用代理。

干杯!

4

1 回答 1

1

您可以使用CGLIB 之类的东西来创建扩展的代理类SystemObjectImpl

于 2012-08-28T10:07:11.593 回答