获取定义 TypeElement 的元素?

Get Element where TypeElement is defined in?

我有以下 class:

public class Start extends PlacePresenter {

    @NameToken("startPage")
    public interface MyProxy extends ProxyPlace {
    }
}

在注释处理器中,我得到了用 @NameToken 注释的元素,它是 MyProxy。

@Override
public boolean process(Set<? extends TypeElement> annotations,
        RoundEnvironment roundEnv) {

  for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(NameToken.class)) {

    TypeElement typeElement = (TypeElement) annotatedElement;
    // typeElement is MyProxy
  }
}

如何获取 class MyProxy 中定义的元素,即 Start?

包含 class 的内容将由调用 annotatedElement.getEnclosingElement() 返回的 Element 表示:

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(NameToken.class)) {
        System.out.println(annotatedElement.getEnclosingElement()); // prints "Start"
    }
    return true;
}