以下の要件の解決策を探していました-
- ソース ファイルは、メソッドにカスタム アノテーションを使用して書き込まれます。
- メソッド本体は、アノテーションに基づいて少し変更する必要があります。
- ソース ファイルは変更しないでください。ただし、コンパイラへの入力はソース ファイルを変更する必要があります。
以下のAPIを見てきました-
- javax.annotation.processing - 注釈処理。
- javax.lang.model.* - アノテーション処理とコンパイラ ツリー API で使用される言語モデル
- com.sun.source.* - コンパイラ ツリー API。
私は次のようにこれを設計することを考えました:
- 注釈プロセッサを作成する
- コンパイラ ツリーを生成する
- 元のソース ファイルに影響を与えることなく、実行時にコンパイラ ツリーを編集します。
- ツリーをコンパイラに提供する
コンパイラ ツリー API は、com.sun.source.tree.MethodTree へのアクセスを提供する場所で有望なようです。
ただし、コンパイラ ツリー API は読み取り専用のようです。手順 3 と 4 を達成する方法がわかりません
タスクを完了するために採用できるAPIはありますか
注: ソース コードの操作方法のみを探しています。実行時のバイトコード操作なし / AOP
環境: Java 6