2017-03-12 5 views
1

私は、注釈とベースクラスを含む2つのパッケージをライブラリに持っています。私はこの質問の文脈でjavax.annotation.processing.AbstractProcessorを拡張しています。注釈処理環境ですべてのTypeElementsをパッケージに入れることは可能ですか?

パッケージに宣言されているすべての型に対してjava.lang.TypeElementのList/Array/Setを取得する方法はありますか?または要素ですか?

現在、ライブラリ内の関連オブジェクトのグループを示すためにのみ存在するタイプのアノテーションを使用して、クラスにグループをマークする回避策があります。明示的な宣言ではなく、パッケージ(つまり場所)でタイプをグループ化する簡単な方法はありますか?

List<TypeMirror> typeMirrorsInPackage = processingEnv.getElementUtils() 
       .getPackageElement("com.example.sample.annotations") 
       .getEnclosedElements() 
       .stream() 
       .map(Element::asType) 
       .filter(mirror -> mirror.getKind() == TypeKind.DECLARED) 
       .collect(Collectors.toList()); 

javadocによると、注意してください:私は本当に便利エレメント/タイプ/パッケージへのアクセスを実行するためにjavax.lang.model.util.Elementsインスタンスを取得するために(私のAbstractProcessorサブクラスで)ProcessingEnvironmentインスタンス変数を使用 - 答えを見つけることが

答えて

2

これがジェネリック要素の場合は、プロトタイプ型が返されます。これは、その型の型パラメータに対応する型変数に対する要素の呼び出しです。 明らかに、Typesクラスには、ジェネリックを扱うためのより有用なユーティリティメソッドがあります。

関連する問題