我们可以在Java中重载main()方法吗?
问题是“我们可以重载main()
Java中的方法吗?”
是的,我们可以重载main()
Java中的方法。
JVM通过其签名调用任何方法,换句话说,JVM查找签名,然后调用该方法。
如果我们在程序中重载一个main()
方法,则程序中将有多个main()方法。那么JVM调用哪种方法?如果我们有多个main()方法,则无需混淆,默认情况下,JVM仅使用(string[]参数)调用一个main()方法。
示例
class MainMethodOverloading { public static void main(String[] args) { System.out.println("We are in String[] args"); } public static void main(int args) { System.out.println("We are in int args"); } public static void main(String args) { System.out.println("We are in String args"); } }
输出结果
E:\Programs>javac MainMethodOverloading.java E:\Programs>java MainMethodOverloading We are in String[] args
默认情况下,JVM仅调用String参数的一个main()方法,但是如果我们要调用另一个main()方法或任何其他重载main()
方法,则我们只能做一件事,即可以显式调用重载main()
方法。
我们可以使用String参数在原始main()方法内调用其他main()方法。
示例
//重载 // main()方法 import java.io.*; class MainMethodOverloading { //原始main()方法 public static void main(String[] args) { System.out.println("Hi, We are in main (String [] args) "); MainMethodOverloading.main("Call main() with one argument"); } //这些是重载的main()方法 public static void main(String args1) { System.out.println(args1); MainMethodOverloading.main("call main() with", "two argument"); } public static void main(String args1, String args2) { System.out.println(args1 + args2); MainMethodOverloading.main("call main() with", "three argument", "from two argument main()"); } public static void main(String args1, String args2, String args3) { System.out.println(args1 + args2 + args3); } }
输出结果
E:\Programs>javac MainMethodOverloading.java E:\Programs>java MainMethodOverloading Hi, We are in main (String [] args) Call main() with one argument call main() withtwo argument call main() withthree argumentfrom two argument main()