Page 28 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 28
28 | Java’da Fonksiyonel Programlama
3.2. Supplier
Supplier tedarikçi anlamına gelir ve bu arayüzler mantık olarak consumer’ın tersidir denebilir.
Argüman almazlar fakat çıktı üretirler. Bu arayüz içinde tanımlı olarak sadece get metodu bulunur.
public class Main {
static Supplier<String> messageSupplier = () -> “Test Mesaji”;
public static void main(String args[]) {
System.out.println(messageSupplier.get());
}
}
Örneğin, bu örnekte çıktımız messageSupplier tarafından dönülen string’in kendisi olacaktır:
Test Mesaji
Supplier argüman almadığı için BiSupplier gibi versiyonları vardır, fakat belli tipleri dönen versiyonları
bulunmaktadır. Örneğin: IntSupplier, LongSupplier, BooleanSupplier, DoubleSupplier…
IntSupplier için örnek kullanım şu şekilde gösterilebilir:
public class Main {
static IntSupplier birdenOnaSayiSupplier =
() -> (int) (Math.random() * 10 + 1);
public static void main(String args[]) {
System.out.println(birdenOnaSayiSupplier.getAsInt());
}
}
Bu supplier bize 1-10 arasında rastgele bir sayı değeri dönecektir. Örnekten görülebileceği gibi bu
arayüzler get metodu yerine getAsX şeklinde metotlar kullanır.
3.3. Predicate
Predicate dayanak gibi bir anlama gelir ve bu arayüzler bir argüman alıp üzerinde kontrol mantığı
çalıştırıp boolean değer dönerler. Bu arayüz içinde test metodu bulunur ve argüman üzerinde
kontrol mantığını test eder.
public class Main {
static Predicate<Integer> isCiftSayi = (i) -> i % 2 -= 0;
public static void main(String args[]) {
System.out.println(isCiftSayi.test(10));
System.out.println(isCiftSayi.test(9));
}
}