Java環境で実行されているGroovyスクリプト内のすべてのメソッド呼び出しをインターセプトしようとしています。groovy内のすべてのメタクラスに対するすべてのメソッド呼び出しを傍受する
特に、すべてのメソッド呼び出しの戻り値の型をチェックしたい場合は、X
の場合はY
に置き換えます。
私はあなたがMetaClass上でinvokeMethod
を使用して傍受することができると知っていますが、私がコンパイルするスクリプトクラスに対してのみ行うことができます。スクリプトがクラスA
のメソッドを呼び出すと、以前は手動でMetaClassをレジストリから手動でフェッチしてメタメソッドでオーバーライドすることなく、傍受できない新しいMetaClass[A]
が作成されます。
私はGroovySystem.getMetaClassRegistry()
を使用して、MetaClassが作成されたときにリスナーを追加しようとしましたが、そこにメタメソッドを追加することはありませんでした。
私はこれを自動化し、変換する必要のあるメソッドにアノテーションを追加する必要はなく、どのクラスのメソッドを変換するかを知る必要はありません。 X
を返すすべてのメソッドは、Y
を返す必要があります。
すべてのメソッド呼び出しをグローバルに代行できますか?
代わりにMetaClassの作成を代行できますか?
自動AST変換を追加できますか?