JAVA8 Необязательный, чтобы возвратить логическое или бросить исключение - PullRequest
0 голосов
/ 09 июня 2019

Я хотел бы вернуть true, если optionalTest не пусто, и в противном случае выдать исключение.

Это работает, но я думаю, что есть лучший способ:

if(optionalTest.isPresent()) {
    return true;
} else {
    throw new TestException();
}

Я пытался использовать троичное выражение, но оно не компилируется:

return optionalTest.isPresent() ? true : throw new TestException();

Я также пытался использовать orElseThrow, но затем я получаю строку вместо true:

return optionalTest.orElseThrow(TestException::new);

1 Ответ

0 голосов
/ 09 июня 2019

Я не могу представить себе ситуацию, в которой это было бы хорошей идеей;и если это - когда-либо хорошая идея, то ваш первый фрагмент кода кажется абсолютно лучшим способом сделать это.

Но если вам действительно важно сделать это как одно утверждениеВы можете написать:

return optionalTest.map(s -> true).orElseThrow(TestException::new);

, используя Optional.map (...) , чтобы преобразовать Optional<String> в Optional<Boolean>, который либо отсутствует, либо содержит значение Boolean.TRUE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...