1
0

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 1 year has passed since last update.

現場で覚えたJava文法知識【備忘録】④

Last updated at Posted at 2022-09-19

今回の備忘録
「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

InputPractice4.java
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

InputPractice4.java
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

InputPractice4.java
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

InputPractice4.java
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チェックもよく使うので、しっかり上の違いは知っておいた方が良さそうです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?