0

我正在使用 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);
    }

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

4

1 回答 1

1

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

于 2013-03-16T16:13:35.720 回答