中
x
和m
的默认修饰符
public @interface Anno {
int m() default x;
int x = 10;
}
我认为上面的代码相当于:
public @interface Anno {
public int m() default x;
public static final int x = 10;
}
修饰符public
和public static final
是多余的,但我没有找到官方解释。
我在这看: https://docs.oracle.com/javase/8/docs/technotes/guides/language/annotations.html https://docs.oracle.com/javase/tutorial/java/annotations/index.html http://www.vogella.com/tutorials/JavaAnnotations/article.html
是否有关于这些修饰符的文档?或者有人可以提供“正式”解释吗?
答案 0 :(得分:5)
是的,我相信你是对的 - 我发现支持这一点的一点文件是JLS 9.6:
除非在此明确修改,否则适用于普通接口声明的所有规则都适用于注释类型声明。
所以它基本上表现得像普通界面,其中public
和abstract
是多余的,所有字段都是隐式静态和最终的。