Frage

Is there a way to make the following code sample more concise?

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

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

return withEmails.first().orNull();

I was trying to do something like return verified.or(withEmails.first()) but there is no appropriate method in Optional.

Alternatively return verified.or(withEmails.first().orNull()) will fail when the orNull() method returns null.

War es hilfreich?

Lösung

Just do verified.or(withEmails.first()).orNull();.

Depending on the return type of your method and your IDE of choice, the type inference may not suggest this as it returns another Optional of type T rather an a T itself.

c.f. Optional#or(Optional)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top