在声明 java 方法之前使用了几个修饰符,例如,public
等。static
synchronized
我只想知道修饰符的最大数量或Java方法可以包含的所有修饰符组合。
请参阅 Java 语言规范,第 8.4 章:
MethodDeclaration:
{MethodModifier} MethodHeader MethodBody
和:
MethodModifier:
(one of)
Annotation public protected private
abstract static final synchronized native strictfp
你不能混合:
将所有这些放在一起(感谢用户 Andreas 出色的措辞):
使用正则表达式语法,我们得到:
[ public | protected | private] static final synchronized [native | strictfp]
因此,最大数量为 5;以及这 5 个关键字的 6 种不同组合。
根据 Java 规范,§8.4.3。Method Modifiers,修改的总列表是(不包括注释):
public protected private abstract static final synchronized native strictfp
public
, protected
, 和private
是互斥的,尽管该部分没有这么说。
规范还说:
如果包含关键字的方法声明还包含关键字、、、、或
abstract
中的任何一个,则为编译时错误。private
static
final
native
strictfp
synchronized
因此,如果您abstract
仅包含叶子public | protected
,则最多为 2。
规范中的下一条规则说:
如果包含关键字的方法声明
native
还包含strictfp
.
所以,这意味着没有abstract
,你可以混合如下:
public | protected | private
static
final
synchronized
native | strictfp
最大长度为 5,该长度有 3 * 2 = 6 种组合。