如何从可选中提取字段参数,或者在 null 时引发异常


String result = service.getResult();
if (result == null) {
    DaoObject obj = crudRepository.findOne(..);
    if (obj != null) {
        result = obj.getContent();
    } else {
        throw NotFoundException();
    }
}
service.process(result);

如果DaoObject是一个Optional<DaoObject>,我能做些什么来使用java 8实现与上述相同的目标?

带有.orElseThrow(() -> new NotFoundException());的东西,但是上面的代码在流中看起来如何?

附带问题:我应该使用() -> new NotFoundException()还是NotFoundException::new

你的假设是正确的。这将产生以下代码:

Optional<DaoObject> obj = crudRepository.findOne(..);
result = obj.orElseThrow(() -> new NotFoundException()).getContent();

或者,如果您愿意,可以拆分语句以使其更具可读性:

DoaObject object = obj.orElseThrow(() -> new NotFoundException());
result = object.getContent();

请注意,() -> new NotFoundException()NotFoundException::new 完全相同,因此这只是您认为更具可读性的问题。

你可以做:

Optional<DaoObject> obj = crudRepository.findOne(..);
result = obj.orElseThrow(NotFoundException::new).getContent();

附带问题:我应该使用() -> new NotFoundException()还是NotFoundException::new

这只是一个选择问题。这两个表达式将执行相同的操作。

相关内容

最新更新