为什么在Java中定义方法时返回类型的顺序很重要?

Siv*_*iva 3 java syntax

public void static final finalMethod()
{ 

//This throws error saying "Syntax error on token                       
//"void", volatile expected"

}

public static final void finalMethod()
{

} 
Run Code Online (Sandbox Code Playgroud)

工作良好.为什么订单在定义方法中起着重要作用?为什么java期望volatile关键字在这里?

WoD*_*oSc 9

重要的是返回类型(void在这种情况下)必须始终是方法名称之前的前一项,然后关键字必须在返回类型之前,但带有kewords的顺序无关紧要.

例如,所有这些方法的声明都是有效的:

public static final void finalMethod0() {

}

public final static void finalMethod1() {

}

final public static void finalMethod2() {

}

final static public void finalMethod3() {

}

static public final void finalMethod4() {

}

static final public void finalMethod5() {

}
Run Code Online (Sandbox Code Playgroud)


Ami*_*oki 9

因为它是如何设计的.

编译不仅仅是魔术.它解析代码并且必须遵循特定的语法才能正确解释它.

语法是语法,就是这样.

规则是强制执行的.语法很像规则.他们必须得到遵守.

我无法深入了解这一点,就像规范一样,因为我不是java编码器.我编写C#,但以上内容适用于大多数编译语言.


was*_*stl 6

因为语言规范是这样说的.

请参见8.4给出语法的方法声明

MethodDeclaration:
  {MethodModifier} MethodHeader MethodBody

MethodHeader:
  Result MethodDeclarator [Throws] 
  TypeParameters {Annotation} Result MethodDeclarator [Throws]

MethodDeclarator:
  Identifier ( [FormalParameterList] ) [Dims]
Run Code Online (Sandbox Code Playgroud)