Если (не нуль && не ноль) Java функциональное программирование - PullRequest
1 голос
/ 07 марта 2020

До Java 8 я привык писать этот код таким образом

import io.vavr.control.Option;

Option<String> nullableValueA=Option.of("toto");
Option<String> nullableValueB=Option.of(null);

if (nullableValueA.isEmpty() && nullableValueB.isEmpty()){
        throw new RuntimeException("Business exception");
}

Я хотел бы преобразовать этот код ниже в чистый Java функциональный стиль с Java API или даже vavr API

и что-то в этом роде

nullableValueA.isEmpty()
.and(nullableValueB.isEmpty())
.then(
   () -> throw new RuntimeException("Business exception");
)

Есть идеи, как написать этот код наилучшим образом?

Большое спасибо за вашу помощь

1 Ответ

3 голосов
/ 07 марта 2020

Если вы используете Java 9+, вы можете использовать

String value = Optional.ofNullable("<resolve valueA>")
                .or(() -> Option.ofNullable("<resolve valueB>"))
                .orElseThrow(() -> new RuntimeException("Business exception"));

. Это даст вам первое непустое значение, исключение, если оба пусты .

То же самое можно сделать на Java 8, используя что-то вроде:

String value = Optional.ofNullable("<resolve valueA>")
              .orElseGet(() -> Optional.ofNullable("<resolve valueB>")
                  .orElseThrow(() -> new RuntimeException("Business exception")));
...