与任何表达式一样,三元表达式具有由编译器确定的类型。如果三元表达式的两侧具有不同类型的外观,则编译器将尝试使用两个选项中的最小歧义来查找通用的基本类型。在您的情况下,
-1至少是最不明确的,因此三元表达式的类型为
int。可悲的是,编译器没有使用基于接收变量的类型推断。
rsrqs.get(boxedPci.toString())然后对表达式求值并强制转换为类型,
int以匹配三元表达式,但是因为它
null会抛出NPE。
通过将装箱
-1,三元表达式的值是
Integer,因此您是空安全的。

与任何表达式一样,三元表达式具有由编译器确定的类型。如果三元表达式的两侧具有不同类型的外观,则编译器将尝试使用两个选项中的最小歧义来查找通用的基本类型。在您的情况下,
-1至少是最不明确的,因此三元表达式的类型为
int。可悲的是,编译器没有使用基于接收变量的类型推断。
rsrqs.get(boxedPci.toString())然后对表达式求值并强制转换为类型,
int以匹配三元表达式,但是因为它
null会抛出NPE。
通过将装箱
-1,三元表达式的值是
Integer,因此您是空安全的。