NotNull Булево значение If else с Stream API - PullRequest
0 голосов
/ 25 января 2020

Я написал однострочный код, чтобы сделать оператор if else. Я нашел это излишне долго. Как я могу сделать эту линию короче и эффективнее? isLocked здесь логическое значение.

Stream.of( isLocked ).filter( x -> !x ).findFirst().orElseThrow( LimitLockException::new );

Ответы [ 2 ]

5 голосов
/ 25 января 2020

Использование потоков здесь излишне, вы, похоже, ищете -

if (isLocked) {
    throw new LimitLockException();
}

В "одной строке" =>

if (isLocked) throw new LimitLockException();
1 голос
/ 25 января 2020

Если вы настаиваете на использовании библиотечного класса для перевода его в однострочник, Optional немного лучше, чем Stream (что в итоге дает вам Optional в любом случае):

Boolean isLocked = true;
Optional.of(isLocked).filter(x -> ! x).orElseThrow(LimitLockException::new);

Мне все еще это не нравится. orElseThrow для непредвиденного отсутствия элемента, значения, которое должно присутствовать. Это не для того, чтобы быть заблокированным. Для того, чтобы вызвать исключение в этом случае, я предлагаю, чтобы вы предпочли иметь оператор throw, явно расположенный на его собственной строке. Так что используйте if утверждение из ответа Намана.

...