带有 Optional 的三元运算符中不需要的空指针异常

Jok*_*ker -3 java optional java-8

据我了解,以下代码不应抛出,Null Pointer exception因为我正在安全地使用 Optional 接口。

但是,当我运行此代码时,它会抛出NPE.

public class Test {
        public static void main(String[] args) {
            final Integer inte = false ? 0 : Optional.ofNullable((Integer) null).orElse(null);
         }
    }
Run Code Online (Sandbox Code Playgroud)

如果我在代码中的某个地方弄错了,请告诉我并帮助我纠正相同的错误。

Hoo*_*pje 8

您得到 NullPointerException 的原因是表达式的类型false ? 0 : Optional.ofNullable((Integer) null).orElse(null)int(根据JLS表 15.25-C)。

该表达式的Optional.ofNullable((Integer) null).orElse(null)计算结果为null,并将 anull转换int为 NullPointerException的结果。


归档时间:

查看次数:

199 次

最近记录:

5 年,9 月 前