注釈プロセッサに注釈パラメータを取得する方法

Hiosdra:

私は自分の注釈プロセッサを書いていると私は、プロセスメソッドで以下のコードのように私の注釈のパラメータを取得しようとしています:

roundEnv.getElementsAnnotatedWith(annotation).forEach {
        val annotation = it.getAnnotation(annotation)
        annotation.interfaces
}

私は何を取得することでAn exception occurred: javax.lang.model.type.MirroredTypesException: Attempt to access Class objects for TypeMirrors []、ビルド時に。誰もが注釈データを取得する方法を知っていますか?

Kiskae:

上のドキュメントgetAnnotationの方法は、理由を説明するClass<?>オブジェクトは、注釈プロセッサのための問題があります:

このメソッドによって返された注釈は、その値型クラスである要素を含むことができます。この値は、直接返すことができない(例えば使用するクラスローダなど)クラスを見つけてロードするために必要な情報が入手できない、クラスは全くロード可能ではないかもしれません。返された注釈に関連したメソッドを呼び出すことによりClassオブジェクトを読み取ろうとすると、対応するTypeMirrorを抽出することができるからMirroredTypeException、をもたらすであろう。同様に、クラス[]読み取ろう - 値の要素はMirroredTypesExceptionをもたらすであろう。

クラスのようなアクセス注釈要素にあなたの代わりに使用する必要がありますElement.getAnnotationMirrors()し、手動で関心の注釈を見つけます。これらの注釈ミラーは実際の値を表す要素が含まれているが、問題のクラスの存在を必要としないでしょう。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=224933&siteId=1