ヘクター:
私は、この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));