如何在注释处理器中获取注释方法的返回类型?

Raj*_*h P 1 java annotations

我正在学习编写自定义注释。我有一个简单的注释,需要验证方法的返回类型是否与注释中指定的返回类型匹配。下面是代码。

注释代码:

@Target(ElementType.METHOD)
public @interface ReturnCheck {
    String value() default "void";
}
Run Code Online (Sandbox Code Playgroud)

注释处理器:

@SupportedAnnotationTypes("com.rajesh.customannotations.ReturnCheck")
public class ReturnCheckProcessor extends AbstractProcessor {

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

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

            //Get return type of the method


        }

        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想获取注释方法的返回类型,以便我可以将其与注释中指定的值进行比较。

如何获取方法的返回类型?

Nei*_*etz 6

这是您需要的:

if (element.getKind() == ElementKind.METHOD) {
    TypeMirror returnType = ((ExecutableElement) element).getReturnType();
    // use returnType for stuff ...
}
Run Code Online (Sandbox Code Playgroud)

解释:

您可以检查ElementKind以对其具体类型进行调度。这是推荐的方法而不是instanceof. 之后,您知道它的 anExecutableElement并且可以将其转换为 one。

有关更多详细信息,请参阅ExecutableElementElement