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

2022-08-31 05:11:46

我想使用

java.util.Optional.orElseThrow()

具有要求构造函数参数的异常类型。像这样:

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

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


答案 1

确定。

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

答案 2

看起来您只能从方法中抛出 RuntimeException。否则,您将收到一条错误消息,例如orElseThrowMyException cannot be converted to java.lang.RuntimeException

更新:- 这是旧版 JDK 的问题。我在最新版本中没有看到此问题。


推荐