0

これが私が直面している問題です。

私はプラグインを書いています。SystemObjectというインターフェースと、デフォルトの getter があります。

public class MyPlugin extends Plugin {
        @override
        public SystemObject getSystemObject() {
                return super.getSystemObject();
        } 
}

SystemObject インターフェイスには、プロキシまたはインターセプトしたい getScreenSize() というメソッドがあります。プロキシ クラスを作成するか、この SystemObject インターフェイスを自分で実装すると、クラス キャスト例外が発生します。

これは、getSystemObject (プラグイン システムの一部) の呼び出し元がコード内にこれを持っているためです (リバース エンジニアリングによって検出されます)。

private void foo() { 
     SystemObjectImpl impl = (SystemObjectImpl)plugin.getSystemObject(); 
}

私の質問は、SystemObject インターフェイスで呼び出しをプロキシできる方法はありますか?

インターフェイスを実装し、Java リフレクション プロキシ呼び出しを使用してみましたが、役に立ちませんでした。残念ながら、私は Java プロセスの実行を担当していないため、エージェントを使用できません。

乾杯!

4

1 に答える 1

1

CGLIBのようなものを使用して、を拡張するプロキシクラスを作成できますSystemObjectImpl

于 2012-08-28T10:07:11.593 に答える