我有这样的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));
由于Java 9,有Optional.or
。它接受另一个供应商Optional
。
return cache.getUser(id).or(() -> repository.getUser(id));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句