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

Java SE Gold で勉強したことメモ(Predicate編)

Last updated at Posted at 2024-10-26

関数型インターフェースのPredicate<T>の使いどころについて以下のような場合が挙げられるようです。
Predicateを用いて説明用変数を導入し、処理内容を分かりやすくできます。

Type.java
public enum BloodType{ //血液型を表すEnumクラス
    A,B,AB,O;
}
Patient.java
public class Patient{ //患者を表すクラス
    private BloodType bType;
    private int age;
    
    public Patient(BloodType bType, int age){
        this.bType = bType;
        this.age = age;
    }
    //getter類は省略
}

Predicateを使用しない場合

Main.java
public class Main{
    public static void main(String[] args){
        Patient p = new Patient(BloodType.A, 21);

        //血液型がAで、かつ、年齢が18歳以上の患者の場合、処理を実行
        if(p.getBType().equals(BloodType.A) && p.getAge() >= 18){
            //処理内容
        }
    }
}

Predicateを使用した場合

Main.java
public class Main{
    public static void main(String[] args){
        Patient p = new Patient(BloodType.A, 21);

        //説明用変数を宣言
        Predicate<Patient> isA = p -> getBType().equals(BloodType.A);
        Predicate<Patient> isAdult = p -> getAge() >= 18;

        //説明用変数を用いた評価式
        if(isA.and(isAdult).test(p)){
            //処理内容
        }
    }
}

好みはわかれるかもしれませんが、確かに評価式をパッと見た感じPredicateを使用した方がわかりやすそうではありますね。
ただ、これくらいのコード量だと、使わなくてもいいかもしれません。

使いどころがありそうなのでメモしておきました。
間違っている箇所があれば教えてください。

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