从番石榴到爪哇的可选转换
如何在不使用任何if语句的情况下从Guava Optional转换为Java Optional?
if (maybeSomething.isPresent()) {
return java.util.Optional.of(maybeSomething.get())
} else {
return java.util.Optional.empty()
}
如何在不使用任何if语句的情况下从Guava Optional转换为Java Optional?
if (maybeSomething.isPresent()) {
return java.util.Optional.of(maybeSomething.get())
} else {
return java.util.Optional.empty()
}
使用番石榴变换
maybeSomething
.transform(java.util.Optional::of).or(java.util.Optional.empty());
Guava Release 21引入了toJavaUtil
和fromJavaUtil
转换方法到Optant
类。
javaUtilOptional = Optional.toJavaUtil(guavaOptional);
guavaOptional = Optional.fromJavaUtil(javaUtilOptional);
在引擎盖下,它似乎在很大程度上作为Kayaman答案中的建议来实现:
public java.util.Optional<T> toJavaUtil() {
return java.util.Optional.ofNullable(orNull());
}
...
public static <T> Optional<T> fromJavaUtil(@Nullable java.util.Optional<T> javaUtilOptional) {
return (javaUtilOptional == null) ? null : fromNullable(javaUtilOptional.orElse(null));
}