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

时间:2014-04-07 15:47:46

标签: java java-8 java-stream

我想用

java.util.Optional.orElseThrow()

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

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

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

3 个答案:

答案 0 :(得分:435)

不确定。 orElseThrow(() -> new MyException(someArgument))

答案 1 :(得分:21)

您似乎只能从方法orElseThrow中抛出RuntimeException。否则,您将收到MyException cannot be converted to java.lang.RuntimeException

之类的错误消息

答案 2 :(得分:6)

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