Java 8方法引用:提供一个能够提供参数化结果的Supplier

我想用一下

java.util.Optional.orElseThrow()

使用Exception类型请求构造函数形参。就像这样:

.orElseThrow(MyException::new(someArgument)) // obviously NOT working

是否有一种方法可以创建一个传递参数值的Supplier ?

132783 次浏览

确定。

.orElseThrow(() -> new MyException(someArgument))

看起来你只能从orElseThrow方法抛出RuntimeException。否则你会得到一个类似MyException cannot be converted to java.lang.RuntimeException的错误消息

更新:-这是一个旧版本的JDK的问题。我认为最新版本没有这个问题。

optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));