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());
的内容,但上面的代码与流完全一致?
Sidequestion:我应该使用() -> new NotFoundException()
还是NotFoundException::new
?
答案 0 :(得分:6)
你的假设是正确的。 这将产生以下代码:
Optional<DaoObject> obj = crudRepository.findOne(..);
result = obj.orElseThrow(() -> new NotFoundException()).getContent();
或者,如果您愿意,可以拆分语句以使其更具可读性:
DoaObject object = obj.orElseThrow(() -> new NotFoundException());
result = object.getContent();
请注意,() -> new NotFoundException()
和NotFoundException::new
完全相同,所以这只是您认为更具可读性的问题。
答案 1 :(得分:2)
你可以这样做:
Optional<DaoObject> obj = crudRepository.findOne(..);
result = obj.orElseThrow(NotFoundException::new).getContent();
Sidequestion:我应该使用
() -> new NotFoundException()
还是NotFoundException::new
?
这只是一个选择问题。两种表达方式都是一样的。