29 Aralık 2020 Salı

Optional.orElseThrow metodu

Giriş
Bu metodun iki tane overload edilmiş hali var. Hangisini kullanırsak kullanalım amaç if/else cümlelerinden kurtulmak. 
Örnek
Şöyle kod istemiyoruz
Optional<User> userOptional = userDao.findByCellNumber(cellNumber);
if (!userOptional.isPresent()) {
  throw new UserNotFoundException("...");
} else {
  User user = userOptional.get();
  //...
}
Bunu şöyle istiyoruz
User user = userDao.findByCellNumber(cellNumber).orElseThrow(UserNotFoundException::new);
orElseThrow metodu 
 Açıklaması şöyle.
If the value is present, this method returns the contained value. Otherwise, it throws an exception to be created by the provided supplier.
Java 10 ile geliyor. Supplier vermeye gerek yok. NoSuchElementException fırlatır.

Örnek
Şöyle yaparız.
Optional<Integer> anyOddInStream = Stream.of(2, 4, 6, 8)
                                         .filter(x -> x % 2 == 1)
                                         .findAny();
var current = anyOddInStream.orElseThrow(); 
orElseThrow metodu - Supplier
İmzası şöyle
T orElseThrow(Supplier<? super T> exceptionSupplier)
Örnek
Şöyle yaparız.
// exception could be replaced with any other
Integer opt = anyOddInStream.orElseThrow(
                           () -> new NoSuchElementException("No value present"));

Hiç yorum yok:

Yorum Gönder