お疲れ様です。
はるさらと申します。
今回はjavaの備忘録記事となります。
String型の文字列に対して
isEmpty()メソッドを使用し
NULLチェックを行う際に
String.isEmptyと
StringUtils.isEmptyの違いで
罠に引っ掛かったことがあるので
違いについてお話ししようと思います。
![](https://harusara22.work/wp-content/uploads/2023/03/25380113_s.jpg)
NULLチェックにはどちらのisEmptyメソッド使用すべきか
結論から申し上げると
StringUtils.isEmptyメソッドを
使用してあげるべきだと思います。
理由としては
String.isEmptyメソッドでは
ブランク(空欄)の検知はできますが
NULLに使用すると
『java.lang.NullPointerException』が
発生してしまうためです。
詳しくはこの後の章で記載していきます。
StringUtils.isEmptyメソッドの使用例
StringUtilsクラスの
isEmptyメソッドを使用することで
NULLの場合もチェックすることができます。
下記のソースでは
それぞれString型の変数に
・文字列
・ブランク
・NULL
を設定し、その結果をboolean型の変数に格納して
どのような値が設定されるかを確認しています。
import org.apache.commons.lang3.StringUtils;
public class StringUtilsTest {
public static void main(String[] args) {
//String型の変数に文字列を代入
String str1 = "文字列";
//String型の変数にブランク(空欄)を代入
String str2 = "";
//String型の変数にNULLを代入
String str3 = null;
boolean result1 = StringUtils.isEmpty(str1);
boolean result2 = StringUtils.isEmpty(str2);
System.out.println("str1:"+result1);
System.out.println("str2:"+result2);
boolean result3 = StringUtils.isEmpty(str3);
System.out.println("str3:"+result3);
}
}
![](https://harusara22.work/wp-content/uploads/2023/03/java2.png)
StringUtils.isEmptyメソッドの
結果としては
・文字列→false
・ブランク→true
・NULL→true
が返却されており、
NULLの場合でも
判定してくれていることがわかります。
StringクラスのisEmtpyメソッド使用例
一方、StringクラスのisEmptyメソッドでは
str1(文字列)、str2(ブランク)は
判定できていますが
str3(NULL)については
NullPointerExceptionの例外が
起きてしまいます。
public class StringTest {
public static void main(java.lang.String[] args) {
//String型の変数に文字列を代入
String str1 = "文字列";
//String型の変数にブランク(空欄)を代入
String str2 = "";
//String型の変数にNULLを代入
String str3 = null;
boolean result1 = str1.isEmpty();
boolean result2 = str2.isEmpty();
System.out.println("str1:"+result1);
System.out.println("str2:"+result2);
boolean result3 = str3.isEmpty();
System.out.println("str3:"+result3);
}
}
![](https://harusara22.work/wp-content/uploads/2023/03/java1-1024x627.png?v=1678667297)
そのため、Stringクラスの
isEmptyメソッドだけでは
NULLの判定ができないことがわかります。
NULLチェックに使用するisEmptyメソッドのまとめ
isEmptyメソッドを使用して
NULLチェックを行いたい場合は
StringUtilsクラスを使用しましょう。
StringクラスのisEmptyメソッドでも
NullPointerExceptionが出たら
例外をキャッチするようにして
処理を進めれば出来ないもなさそうですが・・・
まどろっこしいため
あまりお勧めはできないのかなと思います。
それではまたー!!