我正在使用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);
}
问题是调用方法将调用相同的方法而不是原始方法。有没有办法调用原始方法?
答案 0 :(得分:1)
了解如何调用原始方法:实现MethodInterceptor而不是InvocationHandler。 MethodInterceptor的方法有一个额外的参数,可以使用.invokeSuper(arg0,arg2)调用原始方法。