2012-03-07 26 views
14

次のプログラムでは、これが実行されると(例えばコマンドライン経由で)、args JVMが独立してヌルでないことが保証されていますか?Argsはnull以外であることが保証されていますか?

public class test { 
    public static void main(String[] args) { 
    } 
} 
+0

個々の値については、 'args [0]':http://stackoverflow.com/questions/3868878/java-check-if-command-line-arguments-are-null –

答えて

10

短い答え:はい、それは長さが0であってもよいが、nullにはなりません。

+0

@casablanca、もっと新しいバージョンのJavaはありますか? –

+1

@Peter Lawrey:http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12 - これはJava 7仕様では変更されていないようです。 – casablanca

1

MacOS上のダブルクリック可能なアプリケーションバンドルは、コマンドラインがないにもかかわらず、ヌル以外の配列がmainに渡されています。

JVM仕様では、メインメソッドへの配列パラメータをnullにできるかどうかを指定していません。 https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2

ただし、規約はnullではなく、JVMベンダーがこの時点でこの規約を破ることはありません。

2

Loading, Linking, and Initializingセクションには、引数がnullでないことが必要なJava仮想マシン仕様がありません。

したがって、nullが許可されている必要があります。また、プログラムはnull引数を処理するように準備されている必要があります。 Linux上でjavaプログラムを使用してJavaプログラムを起動してJVMを起動するなど、通常の実行時環境でも、引数がnullであることはありません。

関連する問題