ケアレスミスを無くす章
1.2. 配列を返すメソッド
『目的』
配列を返すメソッドを工夫してミスを減らしましょう。
『Before』
配列を返すメソッドで、返り値としてnullを返す実装はミスを誘発することになります。 よくありません。 これは、nullを返す例です。
public class Before {
// 文字列リスト
private List<String> stringList;
/**
* 文字列リストを文字列配列に変換して返す。
*/
private String[] getStringList() {
// リストの中身がないから null を返す
if (stringList.size() == 0) {
return null;
}
// リストの中身があるから配列に変換して返す
return stringList.toArray(new String[stringList.size()]);
}
/**
* 文字列リストに"Hello"を含むかどうかを返す。
*/
public boolean isContainsHello() {
String[] list = getStringList();
if (list != null) {
if (Arrays.asList(list).contains("Hello")) {
return true;
}
}
return false;
}
}
getStringList()メソッドは、リストのサイズが0である場合にnullを返しますが、呼び出し側(isContainsHello)ではnullチェック用の条件文が必要になります。 うっかりnullチェックを忘れてしまい、NullPointerException例外を引き起こしてしまうかもしれません。
『After』
そこで、nullを返す代わりにサイズ0の配列を返すように書き換えてみます。
public class After {
// 文字列リスト
private List<String> stringList;
/**
* 文字列リストを文字列配列に変換して返す。
*/
private String[] getStringList() {
// リストの中身が有ろうが無かろうが配列に変換して返す
return stringList.toArray(new String[stringList.size()]);
}
/**
* 文字列リストに"Hello"を含むかどうかを返す。
*/
public boolean isContainsHello() {
String[] list = getStringList();
if (Arrays.asList(list).contains("Hello")) {
return true;
}
return false;
}
}
呼び出し側でのnullチェック用の条件文が不要になりましたね。 ということは、NullPointerException例外が発生する危険もなくなりました。 また、配列を返すメソッド自身も簡潔になりました。
『まとめ』
配列を返すメソッドは、nullを返すことはせずにサイズ0の配列を返しましょう。 それによって、コードが簡潔になりますし、NullPointerException例外が発生しなくなります。
なお、nullを返すことによる利点は些細な点においてはあるのですが、ミスを防ぐことの方が遙かに重要です。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社品質方針







