为什么没有Optional.or(可选的默认)方法?

时间:2014-05-13 15:31:50

标签: java guava optional

有没有办法让下面的代码示例更简洁?

final FluentIterable<AuthContext> withEmails = // ...               
final Optional<AuthContext> verified = withEmails.firstMatch(VERIFIED_EMAIL);

if (verified.isPresent()) {
    return verified.get();
}

return withEmails.first().orNull();

我试图做return verified.or(withEmails.first())之类的事情,但Optional中没有适当的方法。

return verified.or(withEmails.first().orNull())方法返回null时,orNull()将失败。

1 个答案:

答案 0 :(得分:4)

只需verified.or(withEmails.first()).orNull();

根据您的方法的返回类型和您选择的IDE,类型推断可能不会建议这样做,因为它返回另一个类型为T的Optional而不是T本身。

c.f。 Optional#or(Optional)