我正在编写一个注释处理器,该处理器仅将PostConstruct注释用于方法。假设我有一个这样的课:

public MyClass{

   @PostConstruct
   public void onCreate(){

   }
}


因此,在我的注释处理器中,我可以获取onCreate方法:

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

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

        }


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

最佳答案

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

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

String className =
//            also getSimpleName()
    declaringClass.getQualifiedName().toString();

08-07 06:28