Java 方法可以包含的最大修饰符数是多少



在声明java方法之前使用了几个修饰符,例如publicstaticsynchronized等。

我只想知道 java 方法可以包含的最大修饰符数量或所有修饰符组合。

参见 Java 语言规范,第 8.4 章:

MethodDeclaration:
  {MethodModifier} MethodHeader MethodBody

和:

 MethodModifier:
 (one of) 
 Annotation public protected private 
 abstract static final synchronized native strictfp

您不能混合使用:

  • 访问修饰符(因此您获得了这 3 个中的一个,或者没有包保护(
  • 抽象、静态、最终
  • 抽象与(私有、静态、最终、本机、严格FP、同步(
  • 最后:原生和严格FP

把所有这些放在一起(感谢用户Andreas的出色措辞(:

使用正则表达式语法,我们可以:

 [ public | protected | private] static final synchronized [native | strictfp]

因此,最大数量为5;以及这5个关键字的6种不同组合。

根据 Java 规范 §8.4.3。方法修饰符,修改的总列表是(不包括注释(:

public protected private
abstract static final synchronized native strictfp

publicprotectedprivate是互斥的,尽管该部分没有这么说。

该规范还说:

如果包含关键字的方法声明abstract还包含关键字中的任何一个 privatestaticfinalnativestrictfpsynchronized,则编译时错误。

因此,如果您包括仅剩public | protected abstract,则最多为 2。

规范中的下一条规则说:

如果包含关键字的方法声明native也包含strictfp,则编译时错误。

所以,这意味着没有abstract,你可以按如下方式混合:

public | protected | private
static
final
synchronized
native | strictfp

最大长度为 5,并且该长度有 3 * 2 = 6 种组合。

相关内容

  • 没有找到相关文章

最新更新