Java的简写形式当其中一个返回的对象为null时,If语句返回NullPointerException

Pav*_*kin 7 java null if-statement nullpointerexception

为什么此代码返回错误:java.lang.NullPointerException

Object obj = null;
Long lNull = null;
Long res = obj == null ? lNull : 10L;
Run Code Online (Sandbox Code Playgroud)

但是以下方式可以正常运行:

Object obj = null;
Long res = obj == null ? null : 10L;
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 5

在第二种情况下,编译器可以推断出null必须是一个Long类型.在第一种情况下,它没有 - 并假设表达式返回a long.你可以看到这种情况(即修复它),如,

Long res = obj == null ? lNull : (Long) 10L;
Run Code Online (Sandbox Code Playgroud)

它不会产生NullPointerException.


归档时间:

查看次数:

395 次

最近记录:

7 年,8 月 前