5

私は次のクラスを持っています。

public class Test {

    public static void main(Integer[] args) {
        System.out.println("This is not a main"); 
    }   

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

ここにはmain、acceptInteger[]String []入力引数としての 2 つのメソッドがあります。私の質問はJVM、このクラスのメイン メソッドとして常に 2 番目のメソッドをロードする方法です。array入力引数を常に の時点と見なすのはなぜStringですか?

4

10 に答える 10

14

それは Java が常に探しているものだからです。 Java 言語仕様、セクション 12.1.4 :

メソッド main は public、static、および void として宣言する必要があります。宣言された型が文字列の配列である仮パラメーター (§8.4.1) を指定する必要があります。

于 2013-08-12T19:11:47.643 に答える
4

コマンドライン引数は常にStrings.

于 2013-08-12T19:11:41.810 に答える
2

コマンドライン引数は常にStrings として入力します。:)

于 2013-08-12T19:13:09.177 に答える
1

他の人が言及したこととは別に、var-args を使用して String 配列を実装できます。

public static void main (String ...a)
于 2013-08-12T19:22:27.217 に答える
0

詳細については、このドキュメントを確認してください

http://docs.oracle.com/javase/tutorial/getStarted/application/

また、

文字列の代わりに int を使用する: public static void main (int[] args)

于 2013-08-12T19:13:24.780 に答える
0

他の人が言ったように、mainメソッドは常に、文字列配列を取るオーバーロードを使用して JVM によって呼び出されます。必要に応じて、そのメソッドに他のオーバーロードを自由に作成できます。コード内で自分で呼び出すこともできます。VM が、文字列の配列を取る 1 つのオーバーロードを具体的に探すだけです。

于 2013-08-12T19:13:28.957 に答える
0

これは、JVM によってTHE MAIN METHODとして認識される唯一の署名です。

public static void main(String[] args)

必要な数のオーバーロードされたメイン メソッドを持つことができますが、上記のシグネチャを持つメソッドのみが jvm によって呼び出されます

于 2013-08-12T19:14:29.190 に答える