I have two java.util.Optional
instances and I want to get an Optional
that either:
- Has the value of the first Optional, if it has a value.
- Has the value of the second Optional, if it has a value.
- Is empty of neither Optional has a value.
Is there a straight-forward way to do that, i.e. is there already some API to do that?
The following expressions will do that, but I have to mention the first optional twice:
firstOptional.isPresent() ? firstOptional : secondOptional
This is exactly what com.google.common.base.Optional.or()
does, but that method is not present in Java 8's API.
The accepted answer by aioobe lists a few alternative approaches to overcome this omission of the Optional
API right where such a value has to be computed (which answers my question). I've now opted to add a utility function to my codebase:
public static <T> Optional<T> or(Optional<T> a, Optional<T> b) {
if (a.isPresent())
return a;
else
return b;
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…