为int分配空值

Joh*_*nGa 22 java

如果可以使用以下代码:

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精确地作为"可空的等价物".

  • @FrankComputer:不是Java,它不能.为什么你添加这个评论并不是很清楚,说实话...... (2认同)

Cra*_*lus 12

这不可能.你会得到NullPointerException

  • @JohnJohnGa:`NullPointerException`在运行时发生.不确定你的意思.你想要正确的代码或编译代码吗? (5认同)

pca*_*cao 6

这将抛出NullPointerException.

这样做的原因是您依赖于将Integer值自动取消装箱为int基本类型.Java通过内部调用.intValue()Object来执行此操作,该操作为null.

至于它是否是一个好的做法...我建议不要这样做,除非代码仅由你使用并且你表现得非常好,确保你只将这种方法的返回值赋给Integer值,而不是int.

如果你的代码最终出现在别人使用的lib中,那就不安全了,我宁愿明确抛出一个Exception,有很好的文档记录,并允许对调用者进行防御性编码.