我如何使用CGLib调用原始方法?

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

    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);
    }

问题是调用方法将调用相同的方法而不是原始方法。 是否有一种方法可以调用原始方法?

点赞
用户1832015
用户1832015

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

2013-03-16 16:13:35