用flatMap构建Optional值的函数
假设你有一个可以产生Optional对象的方法f,并且目标T具有一个产生Optional对象的方法g。
都是普通方法,可以通过调用s.f().g()将它们组合起来。这种组合无法工作,s.f()是Optional而不是T.
需要调用:
Optional result = s.f().flatMap(T::g);
s.f()存在可以应用到g上,否则返回空Optional
flatMap案例
package streams.optional;
import java.util.Optional;
public class OptionalFlatMap {
public static void main(String[] args) {
Optional<Double> result = inverse(0.25).flatMap(OptionalFlatMap::squareRoot);
System.out.println(result);
}
public static Optional<Double> squareRoot(Double x){
return x<0?Optional.empty():Optional.of(Math.sqrt(x));
}
public static Optional<Double> inverse(Double x){
return x==0?Optional.empty():Optional.of(1/x);
}
}
标签:flatMap,inverse,Java,II,static,result,Optional,public
From: https://blog.csdn.net/qq_36324341/article/details/144955987