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")));
在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")));