当我尝试知道方法中是否有注释时,它会返回null(即使有注释)

时间:2019-05-31 19:28:06

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

1 个答案:

答案 0 :(得分:3)

您需要使用..标记注释,以便在运行时进行查询。

let base = URL(string: "https://stackoverflow.com/q/43258046/77567")!
// output: "https://stackoverflow.com/q/43258046/77567"

let rel = URL(string: "../16176911", relativeTo: base)!
// output: "../../16176911 -- ttps://stackoverflow.com/q/43258046/77567"

rel.absoluteURL
// output: "https://stackoverflow.com/q/16176911"

rel.standardized
// output: "16176911 -- ttps://stackoverflow.com/q/43258046/77567"

rel.standardized.absoluteURL
// output: "https://stackoverflow.com/q/43258046/16176911"