我有以下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> userFromCache = cache.getUser(id)
.orElseGet(() -> repository.getUser(id));
你还能用吗?:
return (userFromCache.isPresent()) ? userFromCache : repository.getUser(id);
这显然是一个伪装的如果,但任何其他解决方案也是如此。
您可以根据其他选项的可空值创建可选选项:
public Optional<User> getUser(String id) {
return Optional.ofNullable(
cache.getUser(id).orElseGet(
() -> repository.getUser(id).orElse(null)
)
);
}
但是你目前的解决方案显然更具可读性。
自Java9起,有Optional.or
。它接受另一个可选
的供应商。
return cache.getUser(id).or(() -> repository.getUser(id));
我有两个表和 names表有以下列表: -男性姓名从nameID 1到nameID 10 -女性姓名从nameID 11到nameID 21 -两者都从nameID 23到nameID 31 性别表有三个属性: -女性 -男性 -两者 我正在使用引导选择选项,我想显示从nameID11到nameid21的名称,如果用户从gender选择选项中选择女性,等等,这是可能的吗?我看到其他帖子,我注意到他
如果存在,我想在myList中的firstOne上做一些映射。如果不是,我想在第二个上做同样的事情。如果它也不存在,则返回零。 有没有一种方法可以在一个流中编写此代码,并减少代码重复和可选的流中的流?
我想调用一个函数时,选择的任何选项。类似于这样: 但不知何故不起作用。有人能帮忙吗。 请注意 我不想捕获更改事件,如果我选择已经选择选项,则不会触发更改事件
Swift 4还引入了Optionals类型,它处理缺少值。 Optionals说“有一个值,它等于x”或“根本没有值”。 一个Optional本身就是一种类型,实际上是Swift 4的新超级动力枚举之一。 它有两个可能的值, None和Some(T) ,其中T是Swift 4中可用的正确数据类型的关联值。 这是一个可选的整数声明 - var perhapsInt: Int? 这是一个可选的St
Groovy是一种“可选”类型的语言,在理解语言的基础知识时,这种区别很重要。 与Java(一种“强”类型语言)相比,编译器知道每个变量的所有类型,并且可以在编译时理解和遵守合同。 这意味着可以在编译时确定方法调用。 在Groovy中编写代码时,开发人员可以灵活地提供类型或不提供类型。 这可以提供一些简单的实现,并且在正确使用时,可以以强大且动态的方式为您的应用程序提供服务。 在Groovy中,可
Uragano还提供了一些可选项配置,用于服务调优 service.AddUragano(context.Configuration, builder => { builder.AddClient<LoadBalancingPolling>(); builder.