if (not null && not null) Java 函数式编程

If (not null && not null) Java functional programming

在Java8之前,我习惯这样写我的代码

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 API 甚至 vavr API

将下面的代码转换为纯 Java 函数式风格

并做这样的事情

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

关于如何以最佳方式编写此代码的任何想法?

非常感谢您的帮助

如果您使用的是 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")));