在section 8.1.1 Class Modifiers of the Java Language Specification 8中,它指出:
ClassModifier:其中之一
批注公共保护私有抽象静态最终strictfp
但是我设法编译了以下内容:
public strictfp A{}
也就是说,它指出应该选择一个类修饰符,但我可以选择多个。我在这里误解规范吗?
最佳答案
答案在以上规则中:
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier <<== Here
ClassModifier: one of
Annotation public protected private abstract static final strictfp
本质上,该规则表明您可以在
ClassModifier
列表中使用一个或多个ClassModifiers
。这种“一个或多个”迭代概念的递归定义在BNF样式的语法描述中很常见(与EBNF相对,后者为重复提供了特殊的语法)。