A DESCRIPTION OF THE REQUEST :
Provide Optional.or() method similar to Guava with the following implementation:
public Optional<T> or(Optional<T> other) {
if (value != null) {
return this;
} else {
return Objects.requireNonNull(other);
}
}
JUSTIFICATION :
Having or() method would allow picking the very first non-empty Optional. One can even chain or():
opt1.or(opt2).or(opt3)
Such method would be really useful and in line with existing orElse().
---------- BEGIN SOURCE ----------
Following pseudo-test prints `true` all the way down:
Optional<String> foo = Optional.of("abc");
Optional<String> bar = Optional.of("def");
Optional<String> emp = Optional.empty();
System.out.println(foo.or(bar).get().equals("abc"));
System.out.println(bar.or(foo).get().equals("def"));
System.out.println(foo.or(emp).get().equals("abc"));
System.out.println(emp.or(bar).get().equals("def"));
System.out.println(!emp.or(emp).isPresent());
---------- END SOURCE ----------
Provide Optional.or() method similar to Guava with the following implementation:
public Optional<T> or(Optional<T> other) {
if (value != null) {
return this;
} else {
return Objects.requireNonNull(other);
}
}
JUSTIFICATION :
Having or() method would allow picking the very first non-empty Optional. One can even chain or():
opt1.or(opt2).or(opt3)
Such method would be really useful and in line with existing orElse().
---------- BEGIN SOURCE ----------
Following pseudo-test prints `true` all the way down:
Optional<String> foo = Optional.of("abc");
Optional<String> bar = Optional.of("def");
Optional<String> emp = Optional.empty();
System.out.println(foo.or(bar).get().equals("abc"));
System.out.println(bar.or(foo).get().equals("def"));
System.out.println(foo.or(emp).get().equals("abc"));
System.out.println(emp.or(bar).get().equals("def"));
System.out.println(!emp.or(emp).isPresent());
---------- END SOURCE ----------
- duplicates
-
JDK-8080418 Add Optional.or()
-
- Resolved
-