【问题标题】:Which are the default modifiers for fields and methods in a Java annotation?Java 注解中的字段和方法的默认修饰符是什么?
【发布时间】:2015-07-03 05:04:57
【问题描述】:

xm 的默认修饰符是什么

public @interface Anno {
    int m() default x;
    int x = 10;
}

?

我想上面的代码相当于:

public @interface Anno {
    public int m() default x;
    public static final int x = 10;
}

修饰符publicpublic 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

是否有任何关于这些修饰符的文档?或者有人可以提供一个“正式”的解释吗?

【问题讨论】:

    标签: java annotations access-modifiers


    【解决方案1】:

    是的,我相信你是对的 - 我发现支持这一点的一点文档在 JLS 9.6

    除非在此明确修改,适用于普通接口声明的所有规则都适用于注解类型声明。

    所以它基本上表现得像一个普通接口,其中publicabstract 是多余的,所有字段都是隐式静态和最终的。

    【讨论】:

    • 在普通接口抽象中也隐含了方法。
    • @ratchetfreak:是的 - 看起来就是这种情况。当我有机会时会编辑 - 即将下火车......
    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 2013-04-16
    • 2011-02-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多