Supplier olmadan Optional.orElseThrow()
get() için daha net ve niyeti açıklayan bir alternatif olarak Optional.orElseThrow() kullanın.
Kod Karşılaştırması
✕ Java 8
// Risky: get() throws if empty, no clear intent
String value = optional.get();
// Verbose: supplier just for NoSuchElementException
String value = optional
.orElseThrow(NoSuchElementException::new);
✓ Java 10+
// Clear intent: throws NoSuchElementException if empty String value = optional.orElseThrow();
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Kendini belgeleyen
orElseThrow(), yokluğun beklenmedik olduğunu açıkça belirtir.
get()'ten kaçınır
Statik analiz araçları get()'i riskli olarak işaretler; orElseThrow() deyimseldir.
Daha az şablon kod
Varsayılan NoSuchElementException için supplier geçirmeye gerek yoktur.
Eski Yaklaşım
get() veya orElseThrow(supplier)
Modern Yaklaşım
orElseThrow()
JDK'dan itibaren
10
Zorluk
Başlangıç
JDK Desteği
Supplier olmadan Optional.orElseThrow()
Mevcut
JDK 10'dan itibaren kullanılabilir (Mart 2018).
Nasıl çalışır
Optional.get(), başarısızlık olasılığını gizlediği için yaygın biçimde kötü uygulama olarak kabul edilir. Java 10'da eklenen argümansız orElseThrow(), tam olarak aynı şeyi yapar ama niyeti açık kılar: geliştirici bir değer bekler ve yoksa istisna ister.
İlgili Belgeler