Page 29 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 29
Java’da Fonksiyonel Programlama | 29
Yukarıdaki örnekte predicate sayıların çift mi tek mi olduğunu kontrol eder ve istenilen int değeri
üzerinde bunu test eder. Örnekteki çıktı aşağıdaki şekilde olacaktır:
true
false
Consumer’da olduğu gibi predicate için de iki argüman alan BiPredicate versiyonu bulunur.
public class Main {
static BiPredicate<Integer, Integer> esitMi = (x, y) -> x -= y;
public static void main(String args[]) {
System.out.println(esitMi.test(10, 10));
System.out.println(esitMi.test(11, 9));
}
}
Bu predicate sayı değerlerini karşılaştırarak eşitlik durumunu döner. Çıktımız şu şekilde olacaktır:
true
false
Bu arayüzün de IntPredicate, LongPredicate gibi tipe özel çeşitleri bulunmaktadır. Ilk örnek olan
isCiftSayi predicate arayüzü doğrudan IntPredicate olarak aşağıdaki şekilde yazılabilirdi:
public class Main {
static IntPredicate isCiftSayi = (i) -> i % 2 -= 0;
public static void main(String args[]) {
System.out.println(isCiftSayi.test(10));
System.out.println(isCiftSayi.test(9));
}
}
Bu aynı çıktıyı verecektir:
true
false
Birden fazla predicate kullanarak yeni bir kontrol mantığı oluşturmak istenirse and, or, not, negate metotları
kullanılabilir.
Örneğin bir değerin çift sayı olup, altıya eşit olmadığını test edelim. Bunun için çift sayı olup olmadığını
kontrol eden bir predicate ve altıya eşit olup olmadığını kontrol eden ikinci bir predicate tanımlayıp aşağıdaki
gibi ikinci kontrolün değili alınarak kullanılabilir: