java - java 可选:如果做某事模式
问题描述
是否能够将此代码嵌入到 Optional 方法链中:
Optional<Application> appOpt = this.applicationDao.findById(application.getCode());
Application app = appOpt.orElse(Application::new);
if (!appOpt.isPresent()) {
app.get().setUserCreation("user");
app.get().setTimestampCreation(new Date());
}
我想避免再次使用前一个appOpt
对象。我想将所有这些逻辑嵌入到可选方法链中。
我想应该有另一种更优雅的方式来获得它。
我试过玩,ifPresent
但它会返回void
,所以我无法链接orElse
方法:
appOpt.ifPresent(a -> {
a.setUserCreation("userCreation"));
app.setTimestampCreation(new Date());
})
.orElse(Application::new);
我希望我已经解释得很好。
有任何想法吗?
解决方案
再次查看原始代码后,如果Optional
为空,则逻辑似乎应该运行:
Application application = appOpt.orElseGet(() -> {
Application app = new Application();
app.setUserCreation("userCreation"));
app.setTimestampCreation(new Date());
return app;
});
推荐阅读
- javascript - ui-grid 3.1.1 随机渲染表格内容
- node.js - 在 AWS 中部署机器人实例
- google-chrome-extension - 删除权限会导致扩展程序被禁用
- java - jax-rs @Path 表达式中的路径参数是否需要用斜杠分隔?
- javascript - 在 setInterval 完成之前变量变为 true
- bash - 使用 IFS 编写 Bash 脚本
- r - R - 错误:“汽车”的包或命名空间加载失败;加载库失败
- c# - 合并两个列表的重复项时条件合并
- c - 跟踪递归函数
- linux - 随机排序不适用于 --random_source=FILE