2016-05-07 40 views
0

假设我们有一个包含两个重载主方法的类。调用超载主方法

public class MyClass { 
    public static void main(int x){ 
    System.out.println("(int x)version"); 
    } 

    public static void main(String[] args){ 
    System.out.println("(String[] args)"); 
    } 
} 

那么,如何在运行程序时调用(int x)版本?

回答

0

是的,你可以重载主

不,你不能启动你的程序调用过载, JVM会叫的主要特征主要(字串[] args)超载。

//JVM will call this method manually if you want 
public static void main(String[] args,int a){ 
// some code 
} 

//JVM will call this method to start your program 
public static void main(String[] args){ 
// some code 
} 
+0

好的,所以这个特殊的方法有特殊的重载语义。它可以被重载,但不能使用java 来调用。感谢Danito了解我的问题。 – Nealesh

2

的唯一方法是调用它,你会打电话给任何其他静态方法,例如:

public static void main(String[] args) { 
    // call other "main" 
    main(5); 
} 

的问题是,真正的主要方法的方法签名必须精确匹配什么JVM期待因为它是。所有其他的“main”方法重载与JVM的任何其他方法一样,不会成为自动程序启动的位置。

3

MyClass.main(5)

是如何调用它的例子。


如果自动希望被称为main(int)方法,只是从main(String[])调用它。我假设你想让java像输入一样处理输入。这里是一个办法做到这一点

public static void main(int ... ints) { 
    // Process 
} 

public static void main (String[] args) { 
    main(Arrays.stream(args).mapToInt(Integer::parseInt).toArray()); 
} 
+0

我知道如何调用方法,我怀疑是否有可能使用java命令调用重载main方法。我知道我不确切。 :-) – Nealesh

+0

@Nealesh对不起,我明白,但没有回答。不,这是不可能的,JVM将搜索'public static void main(String [])',如果找不到则抛出一个错误。 –

+0

好的,谢谢您的确认。 – Nealesh