在声明java方法之前使用了几个修饰符,例如public
,static
,synchronized
等。
我只想知道java方法可以包含的修饰符的最大数量或修饰符的所有组合。
答案 0 :(得分:6)
请参阅Java语言规范chapter 8.4:
git log
和
git log -m -p
你不能混:
将所有这些结合在一起(感谢用户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
public
,protected
和private
互相排斥,认为该部分没有说明。
该规范还说:
如果包含关键字
abstract
的方法声明还包含关键字private
,static
,final
,{{}中的任何一个,那么这是一个编译时错误1}},native
或strictfp
。
因此,如果您添加的synchronized
只留下abstract
,那么最多只有2个。
规范中的下一条规则是:
如果包含关键字
public | protected
的方法声明也包含native
,则为编译时错误。
所以,这意味着如果没有strictfp
,您可以按如下方式混合:
abstract
最大长度为5,并且有3 * 2 = 6个具有该长度的组合。