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关键字在这里?
重要的是返回类型(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)
因为它是如何设计的.
编译不仅仅是魔术.它解析代码并且必须遵循特定的语法才能正确解释它.
语法是语法,就是这样.
规则是强制执行的.语法很像规则.他们必须得到遵守.
我无法深入了解这一点,就像规范一样,因为我不是java编码器.我编写C#,但以上内容适用于大多数编译语言.
因为语言规范是这样说的.
MethodDeclaration:
{MethodModifier} MethodHeader MethodBody
MethodHeader:
Result MethodDeclarator [Throws]
TypeParameters {Annotation} Result MethodDeclarator [Throws]
MethodDeclarator:
Identifier ( [FormalParameterList] ) [Dims]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |