Eclipse 機能の「実装されていないメソッドを追加する」に似たハックを実装する方法を見つけようとしています。
コードの作成中にこれらのメソッドを追加する代わりに、コンパイル中にこれを行い、テンプレートを使用してメソッド本体を生成したいと思います。さらに、元の .java ソース ファイルを変更したくありません。
たとえば、次のものがあるとします。
interface I { void foo(); }
class C implements I {
public static void main(String[] args) { new C().foo(); }
}
これをコンパイルすると、I.foo
実装されていないため、通常はエラーが発生します。
代わりに、コンパイルを成功させ、その後の実行でテンプレートを使用したいと思います。メソッドと実装されたインターフェイスに関する詳細情報を取得してテンプレートで使用できる{throw UnsupportedOpeationException()
ようにしたいのですが、それは難しくありませんか?
私が最初に考えたのは、注釈 ( ) を試すAutoImplementMethods
ことでしたが、注釈プロセッサは処理中の注釈付きコードを変更できません。
私はある程度快適ですAspectJ
が、型間宣言を使用してそれを行う方法がわかりません。
自分のJavaパーサーを使用してコードコードを生成する以外に、これを行う方法について何か提案はありますか?