LoginSignup
4
2

More than 5 years have passed since last update.

ClassからTypeElementとTypeMirrorを取得する

Posted at

Annotation Processingにおいては、処理対象のクラスはElement及びTypeMirrorでのみ扱うことができ、Classとして扱うことができない。
なので、処理対象でないクラスと比較する場合(対象のクラスが特定のクラスを継承しているか判定するなど)、ClassからTypeElementもしくはTypeMirrorを取得する必要がある。
TypeElementを取得できればElement#asType()でTypeMirrorを取得できるので、ClassからTypeElementを取得できれば解決する。

使うメソッドは java.lang.model.util.Elements#getTypeElement(CharSequence name)
java.lang.model.util.Elementsはインターフェースである。
ProcessingEnvironment#getElementUtils()でインスタンスが取得できる。
よって、AbstractProcessorを継承したクラス内でprocessingEnvを参照して取得すればよい。
よって、コードは以下のようになる。
ちなみにJavaはJava8。

ExampleProcessor.java
Elements elementUtils = processingEnv.getElementUtils()
TypeElement element = elementUtils.getTypeElement("java.lang.String")
ExampleProcessor.kt
val elementUtils = processingEnv.elementUtils
val element = elementUtils.getTypeElement("java.lang.String")

これで、elementはjava.lang.StringクラスのTypeElementになる。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2