如果可以使用以下代码:
Integer a = null;
int b = a;
Run Code Online (Sandbox Code Playgroud)
这是否意味着返回null整数的可能值的函数是一种不好的做法?
编辑1:这些答案中有几种不同的意见.我没有足够的信心选择一个或另一个.
Jon*_*eet 45
NullPointerException当你运行它时,该代码将给出一个代码.它基本上相当于:
Integer a = null;
int b = a.intValue();
Run Code Online (Sandbox Code Playgroud)
......这更加清楚它确实会失败.
你并没有真正为你分配一个空值int- 你正在尝试和失败.
可以null用作一个值Integer; 实际上经常Integer被用来代替int精确地作为"可空的等价物".
Cra*_*lus 12
这不可能.你会得到NullPointerException
这将抛出NullPointerException.
这样做的原因是您依赖于将Integer值自动取消装箱为int基本类型.Java通过内部调用.intValue()Object来执行此操作,该操作为null.
至于它是否是一个好的做法...我建议不要这样做,除非代码仅由你使用并且你表现得非常好,确保你只将这种方法的返回值赋给Integer值,而不是int.
如果你的代码最终出现在别人使用的lib中,那就不安全了,我宁愿明确抛出一个Exception,有很好的文档记录,并允许对调用者进行防御性编码.