2016-05-07 9 views
0

2つのオーバーロードされたメインメソッドを持つクラスがあるとします。オーバーロードのメインメソッドを呼び出す

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はこれまでメインメイン署名(String []型引数)を呼び出します過負荷。

//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が期待しているものを正確に一致しなければならないということですそのためには。他のすべての「メイン」メソッドのオーバーロードは、JVMの他のメソッドとまったく同様であり、自動プログラム起動の場所にはなりません。

3

MyClass.main(5)

は、それを呼び出す方法の例です。


自動的main(int)メソッドが呼ばれるようにしたい場合は、単にmain(String[])からそれを呼び出します。私はあなたがintのような入力を処理する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

関連する問題