存在しない場合はどうすれば別のオプションにオプションをマッピングすることができますか?

ヘクター:

私は、この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));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=182670&siteId=1