java - 为什么方法声明中的顺序很重要?

标签 java

<分区>

我之前没有注意到,直到无意识地将 voidmain 放错了位置。

 public static main void (String[] args){

 }

为什么会报错?

最佳答案

method syntax (由 Java 语言规范指定)这样规定:

 MethodDeclaration:
     MethodHeader MethodBody

 MethodHeader:
     MethodModifiers (opt) TypeParameters (opt) Result MethodDeclarator Throws (opt)

 MethodDeclarator:
     Identifier ( FormalParameterList (opt) )

简要概述:

  • 方法声明由方法头和方法体组成。

  • 方法头由修饰符(可选)、类型参数(也是可选的)、结果(原始类型、void 或另一个 Object)和方法声明符。可以提供抛出(这也是可选的)。

  • 方法声明符由某种标识符组成;这通常被描述为带有任何正式参数(如果有)的方法名称。

让我们将其应用于 main 的有效声明:

public static  void      main     (String[] args)
   ^    ^       ^         ^              ^
  modifiers   result  identifier  parameter list

如果你改变顺序(让我们以你的例子为例),那么你会得到这样的结果:

public static  main      void     (String[] args)
   ^    ^       ^          ^           ^
  modifiers   result  identifier  parameter list

等一下。 main 不是有效结果。并且 void 不是有效标识符(这是两者中更严重的错误;保留字 can't be used as identifiers )。

这就是顺序很重要的原因; Java 有意解析元素的顺序以查看它们是否具有语法意义。引入与顺序无关的声明会让任何阅读代码的人极度感到困惑,并且可能会违反长期以来的方法声明约定。

关于java - 为什么方法声明中的顺序很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725713/

相关文章:

java - 如何在 Java 中控制帧外的各个像素?

JavaMail - 用于用户注册的电子邮件身份验证

java - 如何使用 Ant 脚本运行 main() 方法?

java - 即使 Set-ExecutionPolicy 被禁止,我如何运行 PowerShell 脚本?

java - 正则表达式提取带有括号的单词之间的数据

java - 如何在我的 android studio 应用程序中实现 TLS V1.1 和 V1.2?

java - 如何避免重复并对存储在 LinkedHashMap 中的列表进行计数

java - Selenium Webdriver 和 TestNG 的图形报告

java - 听法

java - 混合外观和感觉