如果可以执行以下代码:
Integer a = null;
int b = a;
这是否意味着函数为整数返回可能的null
值是一种糟糕的做法?
编辑1:在这些答案中有几种不同的观点。我没有足够的信心去选择其中的一个。
发布于 2012-12-17 20:38:51
这是不可能的。你会得到NullPointerException
发布于 2012-12-17 20:39:19
这将抛出一个NullPointerException。
这样做的原因是您依赖于Integer值到int原语类型的自动拆箱。Java通过在对象上内部调用.intValue()
来实现这一点,它是null。
不管这是不是一种好的做法...我建议不要这样做,除非代码只由你使用,并且你表现得非常好,确保你只将这种方法的返回值赋给Integer值,而不是int。
如果您的代码以其他人使用的库结束,那么它是不安全的,我宁愿显式地抛出一个异常,并且有很好的文档记录,并允许调用者进行防御性编码。
发布于 2017-11-10 19:03:18
Java tenerary操作符的有趣之处?:(在OSX上使用8u151 )
如果你这样做了
Integer x = map == null ? 0 : map.get ( key );
它看起来很好很紧凑,然后你就会得到一个npe!如果
map.get ( key )
为null。所以我不得不把它分成两部分,它工作得很好。
https://stackoverflow.com/questions/13914317
复制相似问题