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相对,后者为重复提供了特殊的语法)。

07-26 07:14