Java 8方法引用:提供能够提供参数化结果的供应商

我想用

java.util.Optional.orElseThrow() 

用一个Exceptiontypes来请求一个构造函数参数。 像这样的东西:

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

有没有办法创build一个供应商,传递我的参数值?

当然。 orElseThrow(() -> new MyException(someArgument))

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

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