Scala Option.orElse等效于Java可选
Scala Option.orElse等效于Java可选,java,scala,functional-programming,monads,optional,Java,Scala,Functional Programming,Monads,Optional,选项定义了以下方法: def orElse[B >: A](alternative : => scala.Option[B]) : scala.Option[B] 我试图在Java8中找到类似的东西。我想到了这个表达: private String userId() { return user.map(User::getUsername) .orElse(this.userId.orElseThrow(RuntimeException
选项
定义了以下方法:
def orElse[B >: A](alternative : => scala.Option[B]) : scala.Option[B]
我试图在Java8中找到类似的东西。我想到了这个表达:
private String userId() {
return user.map(User::getUsername)
.orElse(this.userId.orElseThrow(RuntimeException::new));
}
其中,user
和userId
都是可选的
,但不知何故,即使定义了user
,它也会与RuntimeException
一起崩溃。
Java中是否有比刚刚开始在可选的上设置条件更实用的功能?使用:
当您使用普通orElse
时,其参数在执行orElse
本身之前执行,因此orElse
只能返回它,但不能决定是否执行它。使用orElseGet
创建lambda,该lambda仅在可选
为空时执行。您要查找的是Java 9中引入的方法:
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
public可选或(供应商不返回可选的返回:(
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)