在section 8.1.1 Class Modifiers of the Java Language Specification 8 ,它指出:
ClassModifier: one of
Annotation public protected private abstract static final strictfp
但我设法编译了以下内容:
public strictfp A{}
也就是说,它声明应该选择其中一个类修饰符,但我能够选择多个。我是否误解了此处的规范?
最佳答案
答案在上面的规则中:
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier <<== Here
ClassModifier: one of
Annotation public protected private abstract static final strictfp
从本质上讲,该规则表明您可以在 ClassModifiers
列表中使用一个或多个 ClassModifier
。这种“一个或多个”迭代概念的递归定义在 BNF 风格的语法描述中很常见(与 EBNF 不同,EBNF 为重复提供了一种特殊的语法)。
关于java - 指定多个类修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619385/