プログラミング言語JavaやC#では文字列型=参照型として定義されるため、空の文字列""
と参照先なしnull
は明確に区別される。一方で処理ロジックの “有効な文字列を保持しているか?” 確認のために、文字列型の変数に対して「nullまたは空文字列判定」が多用される。
- Java: nullと比較 → 空文字列と比較 を行う。
- C#: System.String.IsNullOrEmptyメソッドを利用する*1。(Javaと同じ判定処理でもOK)
// 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 などを参照。