42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Java】どうしてString.isEmpty()ではなくStringUtils.isEmpty()を使うのか

Last updated at Posted at 2018-03-03

当たり前のように、文字列のnullチェックではorg.apache.commons.lang.StringUtils.isEmpty()を使っていますが、実は、java.lang.String.isEmpty()もあります。
では、どうして外部jarを組み込んでまでorg.apache.commons.lang.StringUtils.isEmpty()を使うのでしょうか?

※ここから先、この記事の中では、StringUtilsとはorg.apache.commons.lang.StringUtilsを指すことにします。

2つのisEmpty()の違い

StringUtilsのisEmpty()

nullか空文字の場合にtrueを返す。

StringのisEmpty()

length()が0の場合のみtrueを返す。

StringとStringUtilsのisEmpty()の実行結果比較

nullと空文字に対して、実際にisEmpty()メソッドを使ってみたソースがこちら:arrow_down:

import org.apache.commons.lang.StringUtils;

public class VsIsEmpty {

  public static void main(String[] args) {

    String str1 = null;
    String str2 = "";

    System.out.println("-------------------------");
//    System.out.println(str1.isEmpty());    //ここでnullPointerExceptionが発生してしまう。
    System.out.println(StringUtils.isEmpty(str1));

    System.out.println("-------------------------");
    System.out.println(str2.isEmpty());
    System.out.println(StringUtils.isEmpty(str2));
  }
}

実行結果はこちら:arrow_down:

-------------------------
true
-------------------------
true
true

「length()が0のとき」というだけあって、String.isEmpty()はNullPointerExceptinを返してきます。
そのため、上記ソースコードではコメントアウトしています。

結論

String.isEmpty()は「空かどうか」を判定する子だった:exclamation:
nullと空は別モノなので、言われてみるとそうなんですが、でもやっぱりemptyというとnullも空もtrueで返してほしい気分になります。

42
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?