14

ではjava.lang.reflect、次のようにします。

Field someField = ...;
Class<?> fieldType = someField.getType();

しかし、javax.lang.model's VariableElement(フィールドを表している場合と表していない場合があります) をどうすればよいでしょうか? 対応する戻り値は (推測) になりTypeElementます。

VariableElement someField = ...;
TypeElement fieldType = someField.???;

では、 で表されるフィールドjavax.lang.modelのタイプ (または ) を取得するにはどうすればよいでしょうか?TypeElementVariableElement

ところで、javax.lang.model に適合する単一の Stackoverflow-tag はありません;)

4

2 に答える 2

10

わかりませんが、これが正しい方法です。
このAPIを実際に理解している人が教えてくれたらうれしいです。

しかし、まあ、縫い目はうまくいきます。

public class SomeClass {
  private final ProcessingEnvironment pe = /* get it somewhere */;
  private final Types typeUtils = pe.getTypeUtils();

  public TypeElement getExtracted(VariableElement ve) {
    TypeMirror typeMirror = ve.asType();
    Element element = typeUtils.asElement(typeMirror);

    // instanceof implies null-ckeck
    return (element instanceof TypeElement)
        ? (TypeElement)element : null;
  }
}

内部の一部が依存しているため、クラスTypesを current から取得する必要があるようです。通常のユーティリティ クラスではありません。ProcessingEnvironment

于 2010-12-19T16:20:53.010 に答える