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

mdo*_*mdo 242 java java-8 java-stream

我想用

java.util.Optional.orElseThrow()
Run Code Online (Sandbox Code Playgroud)

使用Exception类型请求构造函数参数.像这样的东西:

orElseThrow(MyException::new(someArgument)) // obviously NOT working
Run Code Online (Sandbox Code Playgroud)

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

Lou*_*man 473

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


Man*_*anu 22

看来你只能从方法中抛出RuntimeException orElseThrow.否则你会收到一条错误消息 MyException cannot be converted to java.lang.RuntimeException


Ash*_*shp 7

optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
Run Code Online (Sandbox Code Playgroud)