今回の備忘録
「org.apache.commons.lang3」の「ObjectUtils」についてです。
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/ObjectUtils.html
引数が全てNULLかチェックする場合
「ObjectUtils.allNull」
→全てNULLの場合、true
→全てNULLでない場合、false
import org.apache.commons.lang3.ObjectUtils; // 参照
@SpringBootApplication
public class InputPractice4 {
public static void main(String[] args) {
String testA = " "; // スペース文字
String testB = "あいう"; // 設定文字
String testC = ""; //空文字
String testD = null; //null
String testE = null; //null
// 「allNull」→全てNULLであればtrue
// NULLを1つも指定しない(スペースや空文字も含める)
if (ObjectUtils.allNull(testA, testB, testC)) {
System.out.println("(1)全てNULLです。");
}
// NULLを1つだけ指定
if (ObjectUtils.allNull(testA, testB, testC, testD)) {
System.out.println("(2)全てNULLです。");
}
// NULLを2つ指定
if (ObjectUtils.allNull(testD, testE)) {
System.out.println("(3)全てNULLです。"); // 通る
}
}
}
// 結果
// (3)全てNULLです。
結論:
全てがNULLの場合の、(3)だけが通る。
もちろんですが、スペースや空文字はNULL判定されない。
引数が全てNULLでないことをチェックする場合
「ObjectUtils.allNotNull」
→全てNULLでない場合、true
→全てNULLの場合、false
import org.apache.commons.lang3.ObjectUtils; // 参照
@SpringBootApplication
public class InputPractice4 {
public static void main(String[] args) {
String testA = " "; // スペース文字
String testB = "あいう"; // 設定文字
String testC = ""; //空文字
String testD = null; //null
String testE = null; //null
// 「allNotNull」→ 全てNULLでなければtrue
// NULLを1つも指定しない(スペースや空文字も含める)
if (ObjectUtils.allNotNull(testA, testB, testC)) {
System.out.println("(1)全てNULLではありません。"); // 通る
}
// NULLを1つだけ指定
if (ObjectUtils.allNotNull(testA, testB, testC, testD)) {
System.out.println("(2)全てNULLではありません。");
}
// NULLを2つ指定
if (ObjectUtils.allNotNull(testD, testE)) {
System.out.println("(3)全てNULLではありません。");
}
}
}
// 結果
// (1)全てNULLではありません。
結論:
全てがNULLでない(1)が通る。
1つでもNULLが混じっていたら、判定されない。
引数のいずれかにNULLがあるかをチェックする場合
「ObjectUtils.anyNull」
→いずれかがNULLの場合、true
→いずれもNULLで場合、false
import org.apache.commons.lang3.ObjectUtils; // 参照
@SpringBootApplication
public class InputPractice4 {
public static void main(String[] args) {
String testA = " "; // スペース文字
String testB = "あいう"; // 設定文字
String testC = ""; //空文字
String testD = null; //null
String testE = null; //null
// 「anyNull」→ NULLが含まれていたらtrue
// NULLを1つも指定しない(スペースや空文字も含める)
if (ObjectUtils.anyNull(testA, testB, testC)) {
System.out.println("(1)NULLが1つ以上含まれています。");
}
// NULLを1つだけ指定
if (ObjectUtils.anyNull(testA, testB, testC, testD)) {
System.out.println("(2)NULLが1つ以上含まれています。"); // 通る
}
// NULLを2つ指定
if (ObjectUtils.anyNull(testD, testE)) {
System.out.println("(3)NULLが1つ以上含まれています。"); // 通る
}
}
}
// 結果
// (2)NULLが1つ以上含まれています。
// (3)NULLが1つ以上含まれています。
結論:
1つでも含んでいたら検知される。
あまり使い道はなさそうと感じた。
引数のいずれかにNULL以外があるかをチェックする場合
「ObjectUtils.anyNotNull」
→1つでもNULL以外がある場合、true
→全てNULLの場合、false
import org.apache.commons.lang3.ObjectUtils; // 参照
@SpringBootApplication
public class InputPractice4 {
public static void main(String[] args) {
String testA = " "; // スペース文字
String testB = "あいう"; // 設定文字
String testC = ""; //空文字
String testD = null; //null
String testE = null; //null
// NULLを1つも指定しない(スペースや空文字も含める)
if (ObjectUtils.anyNotNull(testA, testB, testC)) {
System.out.println("(1)NULLが1つも含まれていないです。"); // 通る
}
// NULLを1つだけ指定
if (ObjectUtils.anyNotNull(testA, testB, testC, testD)) {
System.out.println("(2)NULLが1つも含まれていないです。"); // 通る
}
// NULLを2つ指定
if (ObjectUtils.anyNotNull(testD, testE)) {
System.out.println("(3)NULLが1つも含まれていないです。");
}
}
}
// 結果
// (1)NULLが1つも含まれていないです。
// (2)NULLが1つも含まれていないです。
結論:
NULL以外があった場合のみ検知というのももっと使わなさそう、、、
終わりに
前回の空文字・ブランクチェックと合わせて、NULLチェックもよく使うので、しっかり上の違いは知っておいた方が良さそうです。