下面的代码抛出NullPointerException
,但我不明白为什么,该对象不为空。
public class A{
int GetValue()
{
return (true ? null : 0);
}
public static void main(String[] args) {
A obj= new A();
obj.GetValue();
}
}
答案 0 :(得分:3)
因为它是unboxing
null
int
(true ? null : 0); // returns null always
返回值为int
,将null
转换为int
会引发NPE
当您的方法返回基元时,您需要确保该值永远不会null
。您可以通过返回Integer
Integer GetValue() // allows nulls
{
return (true ? null : 0);
}
但是再次来电者可能会失败
int x = GetValue(); //fails
返回Optional会更好。