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

元のメソッドを呼び出す方法を見つけました: InvocationHandler の代わりに MethodInterceptor を実装します。MethodInterceptor のメソッドには、.invokeSuper(arg0, arg2) を使用して元のメソッドを呼び出すことができる追加の引数があります。

于 2013-03-16T16:13:35.720 に答える