Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

書籍 Effective Java | nullではなく、空配列か空コレクションを返す

パンくず

Effective Java
nullではなく、空配列か空コレクションを返す

概要

nullではなく、空配列か空コレクションを返す

詳細

配列やコレクションを返却する処理で、データが無いケースを扱いたい場合は
nullではなくサイズ0の空配列・空コレクションを返却すること。
このことにより、利用側でnull専用のロジックを組む必要がなくなる。

サンプルコード

package effective.creation.chapter6;

public class SampleNo43 {
  private static final String[] EMPTY_STRINGS = new String[0];

  public static void main(String[] args) {
    String[] hoges1_1 = getHoges1("hoge,hage,hige");
    printHoges1(hoges1_1);
    String[] hoges1_2 = getHoges1("");
    printHoges1(hoges1_2);

    String[] hoges2_1 = getHoges2("hoge,hage,hige");
    printHoges2(hoges2_1);
    String[] hoges2_2 = getHoges2("");
    printHoges2(hoges2_2);

  }

  // nullを返却する場合の共通処理側
  private static String[] getHoges1(String commmaSeparateHoges) {
    if (commmaSeparateHoges == null || commmaSeparateHoges.equals("")) {
      return null;
    }
    return commmaSeparateHoges.split(",");
  }

  // nullを返却する場合の利用処理側
  private static void printHoges1(String[] hoges) {
    if (hoges == null) {
      return;
    }
    for (String hoge : hoges) {
      System.out.println(hoge);
    }
  }

  // サイズ0の空配列を返却する場合の共通処理側
  private static String[] getHoges2(String commmaSeparateHoges) {
    if (commmaSeparateHoges == null || commmaSeparateHoges.equals("")) {
      return EMPTY_STRINGS;
    }
    return commmaSeparateHoges.split(",");
  }

  // サイズ0の空配列を返却する場合の利用処理側
  private static void printHoges2(String[] hoges) {
    for (String hoge : hoges) {
      System.out.println(hoge);
    }
  }
}

出力

hoge
hage
hige
----------------------------------------------------
hoge
hage
hige