CodeBlanks Logo Icon CodeBlanks

Özet - Optional

ofNullable, map ve orElse'yi birleştirerek bir kullanıcı bulucu yazarsın.

Özet - Optional

Bu grupta Optional'ın temellerini gördün. of null olmayan değeri sarmalar; ofNullable null güvenlidir; map ve flatMap dönüşüm yapar; orElse ve orElseGet varsayılan verir; ifPresent ve isPresent koşullu eylem sağlar.

Bu yöntemleri zincirlemek güvenli kod üretir. Önce ofNullable ile girişi sarmala, sonra map ile dönüştür, son olarak orElse ile varsayılan ver. Bu desen, null denetimlerini ortadan kaldırır ve okunaklı kod bırakır.

Uygulama ofNullable + map + orElse zinciri

Bir String input = null değişkeni tanımla. Optional.ofNullable(input) ile sarmaladıktan sonra map(String::toUpperCase) ile dönüştür ve orElse("BOŞ") ile varsayılan ver. Sonucu System.out.println ile yazdır.

Başlangıç kodu

Main.java
import java.util.Optional;

// null olabilecek girişi sarmala
// map ile büyük harfe çevir, orElse ile BOŞ ver
// Sonucu yazdır

Örnek çözüm

Main.java
import java.util.Optional;

public class ChainOptional {
    public static void main(String[] args) {
        String input = null;
        String result = Optional.ofNullable(input)
            .map(String::toUpperCase)
            .orElse("BOŞ");
        System.out.println(result);
    }
}

Beklenen çıktı

BOŞ

Optional ne zaman kullanılır?

Optional öncelikle bir yöntemin dönüş türü olarak kullanılır; sonuç yokluğunu açıkça belirtmek içindir. Alanlarda, yöntem parametresinde veya koleksiyon elemanı olarak kullanılması önerilmez.

Örnek: Optional<User> findById(int id). Bu imza, çağıran tarafa kullanıcının bulunamayabileceğini söyler. null denetimi yerine opt.orElseThrow() veya opt.ifPresent(...) kullanılır. Bu, kodun niyetini daha net gösterir ve NullPointerException riskini azaltır.

Uygulama isPresent + ifPresent + orElse bir arada

Optional.of("Selin") ile bir Optional<String> oluştur. Önce isPresent ile değeri denetle; doluysa System.out.println ile "Var: " ön ekiyle değeri yazdır. Sonra ifPresent ile "Hoş geldin " ön ekiyle yazdır. En son orElse("Misafir") ile değeri alıp yazdır.

Başlangıç kodu

Main.java
import java.util.Optional;

// "Selin" dizgisini Optional.of ile sarmala
// isPresent ile denetle ve yazdır
// ifPresent ve orElse ile de yazdır

Örnek çözüm

Main.java
import java.util.Optional;

public class FullOptional {
    public static void main(String[] args) {
        Optional<String> name = Optional.of("Selin");
        if (name.isPresent()) {
            System.out.println("Var: " + name.get());
        }
        name.ifPresent(n -> System.out.println("Hoş geldin " + n));
        System.out.println(name.orElse("Misafir"));
    }
}

Beklenen çıktı

Var: Selin
Hoş geldin Selin
Selin

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi yöntem değer yoksa Supplier'ı çağırır?

  • orElse
  • ifPresent
  • isPresent
  • orElseGet Doğru cevap

Açıklama: orElseGet Supplier alır ve yalnızca boş durumda çağırır.

2 Yöntemi davranışla eşleştir

Kavram Anlamı
ofNullable null güvenli sarmalar
map Dönüştürür
orElse Varsayılan verir
ifPresent Consumer çalıştırır

İleri seviye bölümündeki tüm dersler