有没有办法让下面的代码示例更简洁?
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()
将失败。
答案 0 :(得分:4)
只需verified.or(withEmails.first()).orNull();
。
根据您的方法的返回类型和您选择的IDE,类型推断可能不会建议这样做,因为它返回另一个类型为T的Optional
而不是T本身。