如何用CGLib调用原始方法?

时间:2013-03-16 15:23:52

标签: java cglib luaj

我正在使用CGLib动态更改TileEntity(Minecraft)。在InvocationHandler中,我为接口调用Lua函数,但我希望在Java中调用已存在的方法。 这是我的调用方法:

    public Object invoke(Object arg0, Method arg1, Object[] arg2)
            throws Throwable {
        for (Method m : BaseTileEntity.class.getMethods()) {
            if (m.equals(arg1)) {
                return m.invoke(arg0, arg2);
            }
        }
        return ((BaseTileEntity)arg0).file.call(arg1.getName(), arg2).arg(1);
    }

问题是调用方法将调用相同的方法而不是原始方法。有没有办法调用原始方法?

1 个答案:

答案 0 :(得分:1)

了解如何调用原始方法:实现MethodInterceptor而不是InvocationHandler。 MethodInterceptor的方法有一个额外的参数,可以使用.invokeSuper(arg0,arg2)调用原始方法。