如下图所示,代码被IDEA提示‘OptionalInt.getAsInt()’ without ‘isPresent()’ check:
可以用下面的代码验证:
public static void main(String[] args) {
IntStream stream = IntStream.builder().build();
System.out.println("最大值:" + (stream.max().getAsInt()));
}
在IntStream里没有内容的情况下,getAsInt()引发了空指针异常。
intStream.max()返回值类型是java.util.OptionalInt
,用于解决空指针异常问题。
用orElse()替代getAsInt(),可以解决该问题。
public static void main(String[] args) {
IntStream stream = IntStream.builder().build();
System.out.println("最大值:" + (stream.max().orElse(0)));
}
值得一提的是,解决问题之余,也要思考实际意义。比如,如果没有数值,其最大值设置为默认0是否合理?