メソッドにパラメーターを指定args[]
することも、指定しmain()
ないことを選択することもできます。しかし、十分な引数を渡さずに他のパラメーター化されたメソッドを呼び出すと、エラーが発生します。
なぜこの方法では当てはまらないのmain(String[] args)
ですか?
public static void main(String[] args)
main
の配列であるパラメータを常に受け取りますString
。コマンドライン引数を渡さない場合args
は空ですが、まだそこにあります。
コマンド ライン パラメータが存在しない場合でも、常に String の配列が渡されます。その状況では、配列の長さは 0 です。これは、自分でテストできます。
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("no parameters were passed");
}
}
ご覧のとおり、main は 1 つの関数引数 (文字列の配列) を除きます。JVM は、コマンド ライン引数を文字列の配列として main 関数に渡します。引数が指定されていない場合は、空の配列が渡されますが、まだ存在しています。
独自の関数を次のように定義することもできます。
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
その後、この関数を呼び出して、3 つのコマンドライン引数を渡すことをエミュレートできます。
String a[] = {"foo", "bar", "bah"};
myMain(a);
または、コマンドライン引数が指定されていない状況をエミュレートできます。
String a[] = {};
myMain(a);
args
実際のメインから関数に渡すこともでき、パラメーターが指定されているかどうかに関係なく機能します。
public static void main(String[] args) {
myMain(args);
}
null ポインターのチェックインがないことに注意してください。myMain
これを渡すと、null
NPE がスローされます。
なぜならは特別で、何も与えられていないという空の in leu をMain
自動的にとるからです。これは、引数なしのString array
呼び出しを正確に説明しているためです。main()
システムはこれを便宜上提供します。
Java は main メソッド自体を引数付きで呼び出すため、引数なしで "呼び出し" してもエラーは発生しません。