有谁能告诉我为什么Java会在这里抛出NullPointerException
?
Float x = <some condition> ? myObject.getSomeFloat() : 0.0f;
getSomeFloat
返回Float
。0.0f
更改为new Float(0)
可以正常使用。答案 0 :(得分:5)
此三元运算符的类型为float
。因此,如果myObject.getSomeFloat()
返回null,则NullPointerException
为真时会抛出<some condition>
并调用myObject.getSomeFloat().floatValue()
以将Float
转换为float
}。
如果第二个和第三个操作数之一是原始类型T,而另一个操作数的类型是将装箱转换(第5.1.7节)应用于T的结果,则条件表达式的类型为T. / p>
在你的情况下,你有一个原始类型 - 浮点数 - 和浮点数的盒装版本 - 浮点数。因此,条件表达式的类型是基本类型 - float。