yohhoyの日記

技術的メモをしていきたい日記

文字列型のnull/空文字列判定

プログラミング言語JavaC#では文字列型=参照型として定義されるため、空の文字列""と参照先なしnullは明確に区別される。一方で処理ロジックの “有効な文字列を保持しているか?” 確認のために、文字列型の変数に対して「nullまたは空文字列判定」が多用される。

// Java
String s = /*...*/;
if (s != null && !s.isEmpty()) {
  // 文字列sを使った処理
}
// C#
string s = /*...*/;
if (!string.IsNullOrEmpty(s)) {
  // 文字列sを使った処理
}

Javaの場合も、Apache Commons Langを利用すればC#相当の判定関数が提供される。

// Java w/ CommonsLang
import org.apache.commons.lang.StringUtils;   // 2.6以前(Java 1.2+)
import org.apache.commons.lang3.StringUtils;  // 3.0以降(Java 5+)
String s = /*...*/;
if (!StringUtils.isEmpty(s)) {  // または(StringUtils.isNotEmpty(s))
  // 文字列sを使った処理
}

*1:.NET Framework 2.0(無印)の同メソッドにはバグがあったらしい。http://d.hatena.ne.jp/hilapon/20100430/1272650281 などを参照。