kagamihogeの日記

kagamihogeの日記です。

空のリストは渡さないで下さい


if (hogeList != null && !hogeList.isEmpty()) {
doHoge(hogeList);
}

こんな感じのコードがあった。doHoge の javadoc には「引数の List は null とリストが空の場合は呼んじゃダメ」と書いてある。

hogeList の中身はユーザの入力値を元に作るので、空のケースもありうる。そこで何も入力しないケースを試してみると・・・上手くいかない。hogeList は空のはずなのに、どういうわけだか doHoge が呼ばれてしまっている。

ユーザ入力値を空の場合の hogeList のサイズを見ると 1 になっている。何だコレ?と思いつつ hogeList を生成してる辺りのコードを見てみると・・・。


String[] userInput = null;
if (ユーザ入力値が空) {
userInput = new String[0]
} else {
userInput = new String[入力サイズ];
}
hogeList.add(userInput);

ユーザ入力値が空の場合は、hogeList の最初の要素にゼロ長の文字列配列が入っている。つまり、この文脈でいう「ユーザが何も入力しなかった」は「hogeList の最初の要素がゼロ長の文字列配列」ということに。

これじゃどんな場合でも hogeList のサイズは 1 じゃないか・・・。さすがに予想外過ぎた・・・。