Когда я пытаюсь узнать, есть ли аннотация в моем методе, она возвращает ноль (даже если она есть) - PullRequest
1 голос
/ 31 мая 2019

В проекте bukkit, что-то, чтобы упростить создание команд, я сделал что-то, что сработало, но я хочу попробовать новые вещи (чтобы научиться использовать эти вещи: аннотации !!), но в моем коде, когда я смотрю в свой код, если в моем методе есть аннотация «Command», он возвращает «null», и я не понимаю, почему ?

Мой код, который ищет аннотацию "Порядок" в моем классе:

for(Method method : clazz.getMethods()) {
    Command ann = method.getAnnotation(Command.class);
    if(ann != null) {
         // Creates the command
    }
}

Мой класс аннотаций:

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
public @interface Command {
    String command();
    String name();
    String desc() default "";
    String[] aliases() default {};
    boolean admin() default true;
}

Надеюсь, вы поможете мне узнать, где моя ошибка. И я хочу извиниться за мой английский, потому что я своего рода французский, и я знаю, что мой английский не очень хорош: /

PS: я молодой разработчик, поэтому не вините меня, если ответ очевиден, я стараюсь учиться сам, все, что я узнал, не с учителем или другим ....

1 Ответ

3 голосов
/ 31 мая 2019

Вам нужно пометить аннотацию @Retention(RetentionPolicy.RUNTIME), чтобы она была доступна для запроса во время выполнения.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Command {
    String command();
    String name();
    String desc() default "";
    String[] aliases() default {};
    boolean admin() default true;
}
...