ファンクショナルインターフェース
Predicate 引数あり・戻り値boolean。
test, and(論理積), or(論理和), negate(否定), isEqual(equals)メソッドが定義されている。
Predicate<Double> pd = arg -> Math.abs(arg - 3.14) < 0.1; System.out.println(pd.test(3.25)); // false System.out.println(pd.test(3.16)); // true
関数を変数のように扱える。
public void doTest1A() { Predicate<String> helloPredicate = (arg) -> arg == "Hello"; doTest1Re(helloPredicate); // true } public void doTest1B() { Predicate<String> eveningPredicate = (arg) -> arg == "Evening"; doTest1Re(eveningPredicate); // false } public void doTest1Re(Predicate<String> pd1) { System.out.println(pd1.test("Hello")); }
論理積。
Predicate<Integer> multi2 = (arg) -> arg % 2 == 0; // 2の倍数 Predicate<Integer> multi3 = (arg) -> arg % 3 == 0; // 3の倍数 Predicate<Integer> multi6 = multi2.and(multi3); // 2と3の倍数 = 6の倍数 System.out.println(multi6.test(11)); // false System.out.println(multi6.test(12)); // true