我期待这段代码:
import java.util.Arrays;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface Sometation {}
public class Test {
@Sometation
public static void main(String[] args) {
System.out.println(Arrays.toString(Test.class.getAnnotations()));
System.out.println(Arrays.toString(Test.class.getDeclaredAnnotations()));
}
}
导致至少一个非空数组。而是导致
[]
[]
这发生在eclipse和我在终端中运行时。我正在运行'java-8-openjdk-amd64'(由apt在UbuntuMATE 16.04上安装)。
答案 0 :(得分:2)
您已注释main()
方法,而不是Test
类。班级Test
没有注释。要查看您添加的注释,您需要先获取方法,然后使用Method#getDeclaredAnnotations()。像(未经测试)的东西:
Test.class.getMethod("main", String[].class).getDeclaredAnnotations()
或者,您可以将注释放在类上:
@Sometation
public class Test { ... }
然后您的原始代码应显示一些非空数组。