0

問題ではなく、よくわからないものです。このコードは、私が受けていたテスト中に遭遇しました。今ここにコードを貼り付けます。

static void count(String...obj){
     System.out.println(obj.length);
}

public static void main(String str[]){
    count(null,null,null);
    count(null,null);
    count(null);
}

プログラムは正常に実行され、出力は 3 2 であり、最後の count 呼び出しで null ポイント例外がスローされます (明らかに十分です)。ちなみに、これはテストの質問でした。とにかく、関数の引数(String...obj)がどのようなものか理解できません。誰かが私を助けてくれませんか。

4

4 に答える 4

6

これはvarargs parameterであり、基本的に複数の引数を指定して、コンパイラに配列を作成させることができます。

最後の行で NPE を取得する理由は、コンパイラが実質的に次のいずれかを選択できるためです。

count(new String[] { null })

count((String[]) null)

...そして、後者を好みます。

次をキャストすることにより、以前の変換を使用するように強制できますnull

count((String) null);
于 2012-08-02T14:02:05.573 に答える
0

String... は、一連の String パラメータまたは String 配列のいずれかを取ります。null を入れると、null 配列として解釈されると思います。

于 2012-08-02T14:03:52.933 に答える
0

これらのメソッド引数はvarargsと呼ばれ、特定の型の任意の数の引数をメソッドに渡すことができます。別の質問への回答で述べたように、Java 1.5 で導入されましたが、Java モバイル版では使用できません。

于 2012-08-02T14:04:25.717 に答える
0

配列パラメータ指定の別バージョンです。

count(String...obj)

手段 count メソッドは String[] を受け入れます

に等しい

count(String[] obj)
于 2012-08-02T14:02:41.760 に答える