我想用一下

java.util.Optional.orElseThrow()

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

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

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


当前回答

确定。

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

其他回答

似乎您只能从方法orElseThrow抛出RuntimeException。否则,您将得到一个错误消息,如MyException不能转换为java.lang.RuntimeException

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

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

确定。

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