java - 当我试图知道我的方法中是否有注释时,它返回 null(即使有)

标签 java reflection annotations bukkit

在 bukkit 项目中,为了简化命令的创建,我做了一些有用的事情,但我想尝试新事物(学习如何使用这些东西:注释!!)但是在我的代码中,当我查看我的如果我的方法上有注释“Command”,代码将返回“null”,我不明白为什么 🤔

我的代码在我的类中查找注释“Order”:

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:我是一个年轻的开发者,所以如果答案很明显,请不要怪我,我尝试自己学习,我所学的一切都不是跟老师或其他人....

最佳答案

您需要使用 @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;
}

关于java - 当我试图知道我的方法中是否有注释时,它返回 null(即使有),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56400755/

相关文章:

java - 希望它在循环后输出句子,但它不会编译

c# - C# 中的 ReadInt16 返回的内容与 Java 中的 writeShort 所写的不同

java - 在构造函数中使用参数化类型从名称实例化类

java - 无法检测 Spring AOP 中的类级别自定义注释

java - 无法让 org.reflections.Reflections 工作,NoClassDefFoundError

java - 使用@Aspect更改方法签名

Java POJO 属性的 xml 注释

java - 如何使用将枚举传递给 DTO

java - 声明多个数组列表

java - Hibernate DAO 将对象值设置为对象