注釈プロセッサは、2つのTypeElementを提供します.1つは注釈付きオブジェクト用で、もう1つは注釈自体です。コード生成のアノテーション処理中にアノテートされたクラスの型を取り出す方法は?
コードを生成するアノテーション処理中に、注釈付きオブジェクトのタイプを知る必要があるとします。修飾された名前はTypeElement.getQualifiedName()で抽出できます。しかし、Class.forName(fullyQualifiedName)
を使用しようとすると、ClassNotFoundException
がスローされます。
おそらく、クラスが注釈処理コードのパスにないことを意味します。すべての注釈付きコードを処理ライブラリのクラスパスに入れなくても、注釈処理中にそのようなクラスを取り出すことは今まで可能ですか?
この問題を回避するには、のようなものを生成することです:
Class c = Class.forName("thefullyqualifiedname");
を、代わりに生成されたコードではCを使用しますが、それはきれいではありません。私が思い付くことができ
生成されたコードを介して構造体(つまり、セット)に注釈付きクラス型を登録する必要があります。自動化されていなければなりません。したがって、私は注釈の処理中に何らかの形でそれを取得/アクセスする必要があります。 – JVerstry
私は注釈付きインターフェイスを実装するクラスを取得しようとしています。この目的のためにReflectionsが必要ですが、それにはClassオブジェクトが必要です: 'getSubTypesOf()'。私は、サブタイプを見つける別の方法を見つけたり、実装されたインターフェースで注釈を見つけることはできませんでした。 –