修饰符的最大数量是多少,java方法可以包含哪些?

时间:2017-04-14 19:09:39

标签: java methods modifiers

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

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

2 个答案:

答案 0 :(得分:6)

请参阅Java语言规范chapter 8.4

git log

git log -m -p

你不能混:

  • 访问修饰符(因此您获得了其中一个,或者没有包受保护的内容)
  • abstract,static,final
  • 摘要(私有,静态,最终,本机,严格,同步)
  • 最后:native和strictfp

将所有这些结合在一起(感谢用户Andreas的优秀措辞):

使用正则表达式语法,我们得到:

MethodDeclaration:
  {MethodModifier} MethodHeader MethodBody

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

答案 1 :(得分:0)

根据Java规范§8.4.3. Method Modifiers,修改的总列表是(不计算注释):

public protected private
abstract static final synchronized native strictfp

publicprotectedprivate互相排斥,认为该部分没有说明。

该规范还说:

  

如果包含关键字abstract的方法声明还包含关键字privatestaticfinal,{{}中的任何一个,那么这是一个编译时错误1}},nativestrictfp

因此,如果您添加的synchronized只留下abstract,那么最多只有2个。

规范中的下一条规则是:

  

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

所以,这意味着如果没有strictfp,您可以按如下方式混合:

abstract

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