Supplier<T>
- Java kursu
- İleri seviye
- Ders 16/82
- 5 dk
Supplier<T> ile üretici fonksiyonunu öğrenirsin.
Supplier<T> arayüzü
Supplier<T>, hiç parametre almayan ve bir T değeri üreten bir fabrika işlevidir. Tek soyut yöntemi get'tir. Değer üretimini geciktirmek (lazy evaluation) için kullanılır.
Örnek: Supplier<String> greeting = () -> "Merhaba";. Sonra greeting.get() çağrısı "Merhaba" döndürür. Supplier, yalnızca gerektiğinde hesaplanacak pahalı bir değer için idealdir; çünkü get çağrılana kadar üretim yapılmaz.
Supplier ile tembellik
Supplier'ın en güçlü yanı tembelliğidir. get çağrılana kadar hiçbir şey hesaplanmaz. Bu, pahalı işlemleri yalnızca gerçekten gerektiğinde yapmanın standart yoludur.
Örnek: Supplier<List<String>> data = () -> loadFromDisk(). Burada loadFromDisk yalnızca data.get() çağrıldığında çalışır. Aynı deseni Optional.orElseGet ve Stream.generate içinde görürsün; ikisi de Supplier alır ve tembel biçimde değer üretir.
Uygulama Supplier ile değer üret
Bir Supplier<String> tanımla; () -> "Merhaba" lambdasını kullansın. get() çağrısının sonucunu System.out.println ile yazdır.
Başlangıç kodu
import java.util.function.Supplier;
// Supplier ile değer üretici tanımla
// get çağrısıyla değeri üret
// Sonucu yazdırÖrnek çözüm
import java.util.function.Supplier;
public class SupplierExample {
public static void main(String[] args) {
Supplier<String> greeting = () -> "Merhaba";
System.out.println(greeting.get());
}
}Beklenen çıktı
Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Supplier çağrısını tamamla
Supplier<String> greeting = () -> "Merhaba";
String result = greeting.____();
Supplier<String> greeting = () -> "Merhaba";
String result = greeting.get();
Açıklama: get, Supplier'ın çağrı yöntemidir.
2 Supplier kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
Supplier<T> |
Değer üretir |
get |
Çağrı yöntemi |
Parametre yok |
Supplier'ın özelliği |
T get() |
İmza |
3 Hangi arayüz hiç parametre almadan değer döndürür?
- Function<T,R>
- Consumer<T>
- Predicate<T>
- Supplier<T> Doğru cevap
Açıklama: Supplier<T> parametre almaz ve T döndürür.