在section 8.1.1 Class Modifiers of the Java Language Specification 8中,它声明:
ClassModifier:中的一个 注释public protected private abstract static final strictfp
但我设法编译以下内容:
public strictfp A{}
也就是说,它指出应该选择一个类修饰符,但我可以选择多个修饰符。我在这里误解了规范吗?
答案 0 :(得分:6)
答案在上面的规则中:
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier <<== Here
ClassModifier: one of
Annotation public protected private abstract static final strictfp
基本上,该规则规定您可以在ClassModifier
列表中使用一个或多个ClassModifiers
。这是一个迭代概念的递归定义,一个或多个&#34;对于BNF样式的语法描述很常见(与EBNF相反,它为重复提供了特殊的语法)。
答案 1 :(得分:5)
ClassModifiers Java Language Specification完全告诉:
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier
ClassModifier: one of
Annotation public protected private
abstract static final strictfp
因此它在类
之前是1个或更多ClassModifier