java - 如何用 Optionals(函数式编程)替换我的旧 Java 代码?
问题描述
如何使用 Java 8 Optionals(函数式编程)替换以下代码?
ClassA classA = dbService.findByA(a);
if (classA == null) {
classA = dbService.findByB(b);
}
if (classA == null) {
throw new Exception();
}
return classA;
编辑:也许如果我将使用函数式编程findByA
并findByB
返回 Optional 会使我的代码更干净?
解决方案
return Optional.ofNullable(Optional.ofNullable(dbService.findByA(a))
.orElseGet(() -> dbService.findByB(b)))
.orElseThrow(() -> new Exception());
或者,Java 9,更好一点:
Optional.ofNullable(dbService.findByA(a))
.or(() -> Optional.ofNullable(dbService.findByB(b)))
.orElseThrow(() -> new Exception());
推荐阅读
- java - 如何从 ArrayList 中删除索引并打印已删除索引的总整数?
- flutter - 无效参数:URI 中未指定主机 - Image.network
- python - 生成回文的函数
- reactjs - 如何为 React 导航抽屉屏幕标题提供自定义样式
- getstream-io - Getstream 基于位置的提要?
- python - 如何使用for循环在python中反转字符串数字
- git - 如何在 Github 存储库上将主分支重命名为 master
- prestashop - Prestashop 1.7 如何编辑 $stylesheets smarty 变量
- apache-kafka - Apache Kafka:将 __consumer_offsets 重新分配给新代理时出现 kafka.common.OffsetsOutOfOrderException
- c# - 从用户那里收集 int 并添加到数组中,直到他们输入“OK”