次のコードでは、null参照をvarargsパラメータとして使用しています。Javaでnullパラメータを持つVarargs
package currenttime;
import java.util.Arrays;
public class Main
{
private static void temp(String...str)
{
System.out.println(Arrays.asList(str));
}
public static void main(String[] args)
{
temp(null,null);
temp(null);
}
}
そのstr[0]=null
とstr[1]=null
手段[null, null]
を表示temp(null, null);
方法の最初の呼び出し。
が後で呼び出されますが、temp(null);
を呼び出すとNullPointerException
がスローされ、str
自体がnull
であるように見えます。
タイプがString
の場合はのようにキャストされ、それは動作し、[null]
と表示されます。
なぜ最後の呼び出しで、明示的な型キャストが必要ですか? 最初の呼び出しとは異なるnull
参照を持つ文字列配列であると考えられます。正解は何ですか?
'String str = null; Arrays.asList(str); 'は動作します、なぜですか? –
'Arrays.asList(str);' 'java.util.List'を' null'エントリで構築します。 'String str = null;'は 'List'が作成される(' null'ではない)参照とはまったく関係がありません。 – Tiny
@Tiny。まさに:) –