I’ve seen a bunch of solutions for this question but no matter what I try, IDEA still reports an error.
Consider the following block:
double testDouble= customClass.stream() .mapToDouble(CustomClass::getDouble) .max() .getAsDouble();
This reports a warning of 'OptionalDouble.getAsDouble()' without 'isPresent()' check
.
If I try this then it doesn’t compile:
double testDouble= customClass.stream() .mapToDouble(CustomClass::getDouble) .max().orElseThrow(IllegalStateException::new) .getAsDouble();
Neither does this:
double testDouble= customClass.stream() .mapToDouble(CustomClass::getDouble) .max().orElse(null) .getAsDouble();
Or this:
double testDouble= customClass.stream() .mapToDouble(CustomClass::getDouble) .max().isPresent() .getAsDouble();
While i know these optional doubles will never be null, i’d like to resolve them so there are no warnings.
Can anyone point out where i am going wrong?
Advertisement
Answer
double testDouble= customClass.stream() .mapToDouble(CustomClass::getDouble) .max().orElseThrow(IllegalStateException::new).getAsDouble();
orElseThrow
returns a double
, not an OptionalDouble
. There’s no need to call getAsDouble()
.
double testDouble = customClass.stream() .mapToDouble(CustomClass::getDouble) .max().orElseThrow(IllegalStateException::new);