指定多个类修饰符

时间:2014-12-23 11:24:56

标签: java

section 8.1.1 Class Modifiers of the Java Language Specification 8中,它声明:

  

ClassModifier:中的一个   注释public protected private abstract static final strictfp

但我设法编译以下内容:

public strictfp A{}

也就是说,它指出应该选择一个类修饰符,但我可以选择多个修饰符。我在这里误解了规范吗?

2 个答案:

答案 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