如何找到ExecutableElement的类名?

Sae*_*umi 1 java annotation-processing

我正在写一个注释处理器,我PostConstruct只对方法使用注释。假设我有一个这样的课:

public MyClass{

   @PostConstruct
   public void onCreate(){

   }
}
Run Code Online (Sandbox Code Playgroud)

所以在我的注释处理器中,我可以获得onCreate方法:

   for (Element element : roundEnv.getElementsAnnotatedWith(PostConstruct.class)) {

            if (element.getKind() != ElementKind.METHOD) {
                return false;
            }
            ExecutableElement method = (ExecutableElement) element;

        }
Run Code Online (Sandbox Code Playgroud)

而且我还需要了解onCreate方法(MyClass)的类名,但ExecutableElement没有提供任何方法来做到这一点。还有其他实用程序类可以给我类名吗?

Rad*_*def 5

声明方法的类是方法的封闭元素:

TypeElement declaringClass =
    (TypeElement) method.getEnclosingElement();

String className =
//            also getSimpleName()
    declaringClass.getQualifiedName().toString();
Run Code Online (Sandbox Code Playgroud)