使用内部类转换代理Java类

时间:2012-08-28 09:55:17

标签: java proxy

这是我面临的一个问题。

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

干杯!

1 个答案:

答案 0 :(得分:1)

您可以使用CGLIB之类的内容来创建扩展SystemObjectImpl的代理类。