这是java版本:
Optional<Object> optionalFramework = Optional.empty();
optionalFramework.orElseThrow(IllegalStateException::new);
如何在scala中重写它? (注意 使用java.util.Optional
而不是scala Option
)如何替换scala中的IllegalStateException::new
?
答案 0 :(得分:2)
如果您使用的是Scala 2.12.x,则可以使用SAM type:
val a = Optional.of(10)
a.orElseThrow(() => new IllegalStateException("Can't do that"))
否则,您需要实现完整的Supplier
界面:
a.orElseThrow(new Supplier[Throwable] {
override def get(): Throwable = new IllegalStateException("Nope")
})
Scala中没有与Method Reference相同的语法,它类似于lambda表达式的语法,但并不完全。