次のプログラムでは、これが実行されると(例えばコマンドライン経由で)、args JVMが独立してヌルでないことが保証されていますか?Argsはnull以外であることが保証されていますか?
public class test {
public static void main(String[] args) {
}
}
次のプログラムでは、これが実行されると(例えばコマンドライン経由で)、args JVMが独立してヌルでないことが保証されていますか?Argsはnull以外であることが保証されていますか?
public class test {
public static void main(String[] args) {
}
}
短い答え:はい、それは長さが0であってもよいが、nullにはなりません。
@casablanca、もっと新しいバージョンのJavaはありますか? –
@Peter Lawrey:http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12 - これはJava 7仕様では変更されていないようです。 – casablanca
MacOS上のダブルクリック可能なアプリケーションバンドルは、コマンドラインがないにもかかわらず、ヌル以外の配列がmainに渡されています。
JVM仕様では、メインメソッドへの配列パラメータをnullにできるかどうかを指定していません。 https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2
ただし、規約はnullではなく、JVMベンダーがこの時点でこの規約を破ることはありません。
のLoading, Linking, and Initializingセクションには、引数がnullでないことが必要なJava仮想マシン仕様がありません。
したがって、null
が許可されている必要があります。また、プログラムはnull
引数を処理するように準備されている必要があります。 Linux上でjava
プログラムを使用してJavaプログラムを起動してJVMを起動するなど、通常の実行時環境でも、引数がnull
であることはありません。
個々の値については、 'args [0]':http://stackoverflow.com/questions/3868878/java-check-if-command-line-arguments-are-null –