ifPresent ve isPresent
- Java kursu
- İleri seviye
- Ders 11/82
- 5 dk
ifPresent ve isPresent ile kontrol öğrenirsin.
Koşullu eylem: ifPresent
ifPresent(Consumer), değer varsa verilen Consumer'ı çalıştırır; yoksa hiçbir şey yapmaz. Bu, isPresent denetimi yapmadan değeri kullanmanın en temiz yoludur.
Örnek: opt.ifPresent(değer -> System.out.println(değer)). Eğer opt doluysa değer yazdırılır; boşsa hiçbir şey olmaz. ifPresent, yan etkisi olan işlemler için uygundur; dönüş değeri bekleyenler için değil. Değer yokluğunda başka bir eylem de istiyorsan ifPresentOrElse kullanılır.
get'ten kaçınma
Optional.get() değeri doğrudan verir; ama değer yoksa NoSuchElementException fırlatır. Bu yüzden get'i denetimsiz çağırmak tehlikelidir.
Yerine ifPresent, orElse veya orElseThrow kullanmak daha güvenlidir. Örnek: opt.ifPresent(v -> use(v)). Böylece boş durum açıkça ele alınır; beklenmedik hata alınmaz. Yine de değer olduğundan eminsen get işe yarar; ancak bu durumda bir yorumla nedenini belirtmek iyi bir uygulamadır.
Uygulama ifPresent ile değeri yazdır
Optional.of("Mert") ile bir Optional<String> oluştur. ifPresent ile lambda kullanarak değeri "Merhaba " ön ekiyle System.out.println ile yazdır.
Başlangıç kodu
import java.util.Optional;
// "Mert" dizgisini Optional.of ile sarmala
// ifPresent ile lambda yazdır
// Çıktı: Merhaba MertÖrnek çözüm
import java.util.Optional;
public class IfPresentExample {
public static void main(String[] args) {
Optional<String> name = Optional.of("Mert");
name.ifPresent(n -> System.out.println("Merhaba " + n));
}
}Beklenen çıktı
Merhaba Mert
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Optional denetim yöntemlerini eşleştir
| Kavram | Anlamı |
|---|---|
ifPresent |
Consumer alır |
isPresent |
boolean döndürür |
isEmpty |
Boş mu |
ifPresentOrElse |
İki Consumer alır |
2 Hangi yöntem boolean döndürür?
- ifPresent
- get
- isPresent Doğru cevap
- map
Açıklama: isPresent değerin varlığını boolean olarak verir.
3 isPresent denetimini tamamla
boolean present = opt.____();
boolean present = opt.isPresent();
Açıklama: isPresent değerin varlığını denetler.