java - 如何在 java 8 的一条语句中返回以下代码?
问题描述
我是 Java 8 的新手,需要帮助。如何压缩下面的代码,以便我可以在一个语句中返回所有代码?
Optional<OfferResponseInfo> offerResponseInfo = newOfferRepository.findByOidAndIsActiveAndIsHidden(oid, true, false)
.map(OfferMapper.INSTANCE::offerToOfferResponse);
boolean flag = principal.getName().equals(offerResponseInfo.get().getUser().getfName()
.concat(offerResponseInfo.get().getUser().getlName())) ? true:false;
offerResponseInfo.get().setOfferOwner(flag);
return offerResponseInfo
.orElseThrow(() -> {
throw new DataNotFoundException(String.format("No offer found for oid %s", oid));
});
解决方案
- 一些代码对齐
- 提取一些变量
检查 offerResponseInfo 是否较早存在 - 当您从存储库中获取它时
OfferResponseInfo offerResponseInfo = newOfferRepository .findByOidAndIsActiveAndIsHidden(oid, true, false) .map(OfferMapper.INSTANCE::offerToOfferResponse) .orElseThrow(() -> { throw new DataNotFoundException(String.format("No offer found for oid %s", oid)); }); Principal offerUser = offerResponseInfo.getUser(); String offerUserName = offerUser.getfName().concat(offerUser.getlName()); boolean isOwner = principal.getName().equals(offerUserName); offerResponseInfo.setOfferOwner(isOwner); return offerResponseInfo;
全部在一个语句中
return newOfferRepository
.findByOidAndIsActiveAndIsHidden(oid, true, false)
.map(OfferMapper.INSTANCE::offerToOfferResponse)
.map(ori -> {
boolean flag = principal.getName().equals(ori.getUser().getfName()
.concat(ori.getUser().getlName()));
ori.setOfferOwner(flag);
return ori;
})
.orElseThrow(() -> {
return new DataNotFoundException(String.format("No offer found for oid %s", oid));
});
推荐阅读
- assembly - ASM 反汇编 RCR 函数调用
- node.js - 每 2 小时使用 bash 脚本重新启动 node.js 脚本
- wireguard - wireguard 只能连接到家庭子网(raspberrypi)
- c# - 如何使用多个 XPath 查询在 c# 中选择单个 XML 节点
- vue.js - Vuex 商店:当我尝试将新对象添加到数组时,会导致错误为“检测到重复键:'test1'。这可能会导致更新错误。”
- c - 在 Windows 上的 C 中使用 curl
- python - 在Unittest中用setUp和tearDown替换python with_statement
- mysql - 在 varchar 列上使用 ORDER BY 时如何优化查询?
- javascript - Webpack + Discord.js + 电子
- reactjs - 更漂亮的错误`␍⏎····mapStateToProps,␍⏎····mapDispatchToProps,␍⏎··`与`mapStateToProps,·mapDispatchToProps`