используя ifPresent с orElseThrow - PullRequest
0 голосов
/ 13 июня 2019

Так что я, должно быть, что-то упустил, я ищу, чтобы выполнить блок операторов, если присутствует Optional, в противном случае выдается исключение.

Optional<X> oX;

oX.ifPresent(x -> System.out.println("hellow world") )
.orElseThrow(new RuntimeException("x is null");

если oX не равно нулю, выведите hellow world. если oX равно null, то выдается исключение времени выполнения.

Ответы [ 2 ]

6 голосов
/ 13 июня 2019

Просто потребляйте свой элемент напрямую.

X x = oX.orElseThrow(new RuntimeException("x is null");
System.out.println(x);

Или

System.out.println(oX.orElseThrow(new RuntimeException("x is null"));
1 голос
/ 13 июня 2019

В Java-8 вы можете использовать if...else как:

if(oX.ifPresent()) {
    System.out.println("hello world");  // ofcourse get the value and use it as well
} else { 
   throw new RuntimeException("x is null");
}

С Java-9 и выше, вы можете использовать ifPresentOrElse

optional.ifPresentOrElse(s -> System.out.println("hello world"), 
        () -> {throw new RuntimeException("x is null");});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...