在Java中,一个入口类的main() 方法可以通过在该类中定义多个main() 方法而被重载。
例如,假设你有一个Main 类,其代码如下“
public class Main {
public static void main(String[] args) {
System.out.println("The main method is called");
}
}
你可以重载上面的main() 方法,如下图所示:
public class Main {
public static void main(String[] args) {
System.out.println("The main method is called");
}
// Overload 1
public static void main(int num) {
System.out.println("Overloaded main method with an int parameter");
}
// Overload 2
public static void main(Boolean bool) {
System.out.println("Overloaded main method with a Boolean parameter");
}
}
然而,当你用Java运行上面的Main 类时,Java虚拟机(JVM)将总是调用带有String[] 参数的main() 方法。
其原因是JVM总是将一个String 的数组传入main() 方法。
即使你从命令行传递一个int 或Boolean 参数,JVM也会将它们作为一个String 的数组传递给main() 方法:
$ java Main.java
The main method is called
$ java Main.java 99
The main method is called
$ java Main.java true
The main method is called
如果你想调用重载的main() 方法,那么你需要像这样从原来的主方法中调用它:
public class Main {
public static void main(String[] args) {
System.out.println("The main method is called");
main(99);
}
// Overload 1
public static void main(int num) {
System.out.println("Overloaded main method with an int parameter");
}
}
现在,当你从命令行运行Main 类时,输出应该如下图所示:
$ java Main.java
The main method is called
Overloaded main method with an int parameter
但话说回来,最好还是给main(int num) 方法另起一个名字。
总而言之,你可以在Java中重载main() 方法,但这样做几乎没有任何好处。😄