1として、その配列の配列を返すのサイズを期待したときに、なぜヌル文字列が渡されたのでしょうか?

サーガルSaxena:

私は非常に複数の面で混乱しています。缶誰かがこの上にいくつかの光を当てます。ここではサンプルコードです。

public static void main(String[] args) {
    String str = null;
    abc(str);
}
static void abc(String... str){
    System.out.println(str.length);
}

OUTPUT:1

JBX:

のは、それを打破してみましょう。私はそれをより明確にするために、パラメータ名の名前を変更しました。

static void abc(String... arrayOfStrings){
    System.out.println(arrayOfStrings.length);
}

String ...代わりに配列を渡すので、あなたが引数としての項目を1つずつ渡し、彼らはあなたのためのアレイに統合されますの下にできると言っています。あなたはまだタイプを明示的にオブジェクトを渡すことができますString[](その場合、それはあなたのための配列を作成しません)が、渡すだけでnull、それが型であると仮定しませんStringString[]

あなたはやっているabc(null)(あなたが渡している引数があるのでnull)。

そうarrayOfStringsであることを起こる一つの項目、がありますnull参照を。

だから、arrayOfStrings.length戻って1

あなたがした場合abc(null, null)、あなたはなるだろう2

あなたがした場合abc((String[]) null)、あなたはなるだろうNullPointerExceptionあなたが取得しようとすることになるためlengthnullオブジェクト参照を。あなたはNULLを渡すことが予想される場合は、確認してくださいabc()のためのチェックをnull引数として渡された配列にアクセスする前に。

渡す一般的なベストプラクティスを避けるようnull、可能な限り、空の配列を渡すことをお勧めします。渡すnullかどうかを確認することを忘れするためにいくつかの方法を待って、ちょうどポイズンピルあるnullと投げますNullPointerException

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197259&siteId=1