I frequently have to do something as below
// some method
public T blah() {
Optional<T> oneOp = getFromSomething();
if (oneOp.isPresent()) {
Optional<T> secondOp = getFromSomethingElse(oneOp.get())
if (secondOp.isPresent()) {
return secondOp.get()
}
}
return DEFAULT_VALUE;
}
it's pretty cumbersome to keep checking for ifPresent() as if i am back to doing the null check
Use the flatMap method which will, if present, replace the Optional with another Optional, using the supplied Function.
If a value is present, returns the result of applying the given
Optional-bearing mapping function to the value, otherwise returns an emptyOptional.
Then, you can use orElse that will, if present, return the value or else the default value you supply.
If a value is present, returns the value, otherwise returns
other.
Here, I also turned the call to getFromSomethingElse into a method reference that will match the Function required by flatMap.
public T blah() {
return getFromSomething().flatMap(this::getFromSomethingElse).orElse(DEFAULT_VALUE);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With