我怎么能如果不存在映射可选另一个可选?

赫克托:

我有这样的Java 8代码:

public Optional<User> getUser(String id) {
    Optional<User> userFromCache = cache.getUser(id);
    if (userFromCache.isPresent()) {
        return userFromCache;
    }
    return repository.getUser(id);
}

它工作正常,但我想知道我怎么能链中的呼叫不使用if我试图用orElseGet,但不允许返回另一个Optional<User>而是一个User

我想是这样的:

Optional<User> userFromCache = cache.getUser(id)
    .orElseGet(() -> repository.getUser(id));
Kelvॊd:

由于Java 9,有Optional.or它接受另一个供应商Optional

return cache.getUser(id).or(() -> repository.getUser(id));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果记录存在,则映射;如果不存在,则映射另一个-Biztalk映射

我怎样做的东西,如果一个可选的<String>是不存在或存在但是一个空字符串?

是否允许为另一个过程的可选参数传递一个不存在的假定形状数组?

需要一个字段,如果另一个不存在

密码查询-检查是否存在关系(如果不存在)检查另一个

如果我在 vertica 中传递一个不存在的资源池怎么办?

MYSQL如果存在则返回一个值,如果不存在则返回另一个

SQL,如果另一个表中不存在该字段,则选择字段

如果 postid 不存在,MySQL 将记录插入到另一个表

如果不存在,则根据另一个表插入到表

SQL选择-插入值(如果不存在)按另一个值分组

如果函数不存在,如何重定向到另一个脚本?

如果特定变量不存在,则获取另一个变量的mysql结果

如果另一个数据不存在,则从 json 文件返回数据

如果当前不存在,则在流中标记另一个Optional

如果表不存在,则将表数据移动到另一个表

如果值不存在,MYSQL 将值插入另一个表

如果列值在另一个表中不存在,则获取计数

如果该文件不存在,如何指向另一个文件?

如果另一个不存在,如何删除类

如果另一个文件不存在,如何搜索并使用它?

为什么我的安装程序正在寻找另一个不存在的MSI?

如果一个表不存在于另一个表中,该如何删除

如果任何行上都不存在另一个值,则匹配一个值

打开另一个分支(如果不存在则创建),而不检查是否已经存在?

比较两个数组并将状态放入另一个数组(如果存在或不存在)

如果mysql中的另一个表上不存在数据,如何从另一个表中选择数据

我如何将一个可选映射到一个原始的可选映射?

如果初始表中不存在该表,则从另一个表插入表uid