main
用作声明“ main”方法的标识符时,如何不能用作标识符?
对于这样的经典习语:
public class Foo{
public static void main(String[] args){
}
}
main
不是关键字,出于明显的复古兼容性原因,它可能永远不会成为Java中的关键字。
关于这个问题,是main
一个好的标识符吗?
第一:对编译器有效并不意味着一定是好的。
例如java1234
,建议的选项也是有效的标识符,但实际上应避免使用。
main
具有非常特别和重要的意义:它用作java
命令行执行的类和jar的入口点方法。
将main
方法名称java
用作变量名称或类名称可能会产生误导,而使用不符合命令行使用标准的方法名称。
例如,将表示应用程序入口点的类定义为应用程序的Main
类是可以接受的,因此也可以将其用作变量名,例如:
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
通常,在Java中,多个字符或“单词”被视为编译器的有效标识符,但强烈建议不要在客户端代码中使用(但生成的代码可能会这样做:例如,嵌套类),因为它们不可读和/或真的产生误导。
例如,这对于编译器可能是有效的:
public class Object { // 1
public void foo() {
...
}
}
public class BadChosenIdentifier {
public static void main() { // 2
new BadChosenIdentifier().toString(new Object());
}
public void toString(Object java1234) { // 3, 4
String _result$ = java1234 + " -> to avoid"; // 4
System.out.println(_result$);
}
}
但是我们不想要:
- 命名
Object
我们的班级,因为这是在java.lang
(1)中。
main()
如果不满足要使用的标准,则为方法命名java
命令行(2),。
- 重载
Object.toString()
方法(3)。
- 来命名我们的变量
_
,$
或违背共享命名约定(4)任何奇怪/ unmeaningful字符。