Как получить тип возврата аннотированного метода в процессоре аннотаций? - PullRequest
0 голосов
/ 10 июня 2018

Я учусь писать собственные аннотации.У меня есть простая аннотация, которая должна проверить, соответствует ли возвращаемый тип метода возвращаемому типу, указанному в аннотации.Ниже приведен код.

Код аннотации:

@Target(ElementType.METHOD)
public @interface ReturnCheck {
    String value() default "void";
}

Процессор аннотации:

@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;
    }

}

Я хочу получить тип возврата аннотированного метода, чтобы я могсравните его со значением, указанным в аннотации.

Как получить тип возвращаемого значения метода?

1 Ответ

0 голосов
/ 10 июня 2018

Вот что вам нужно:

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

Объяснение:

Вы можете проверить ElementKind, чтобы выполнить диспетчеризацию по его конкретному типу.Это рекомендуемый способ сделать это вместо instanceof.После этого вы знаете, что это ExecutableElement, и можете привести его к одному.

См. ExecutableElement и Элемент для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...