1

这个问题与任何问题都没有特别的关系。只是想知道发生了什么。

我有以下声明:

Integer myInt = null;
if(myInt!=null) {
  // it's not entering here...
}

执行流程正常,“if”语句中的行没有正确执行。但是,当突出显示和检查 (ctrl+shift+i) myInt!=null而不是得到错误时,我在检查员中收到错误说明:

myInt.intValue() 空指针异常

我想知道为什么 Eclipse 需要转换为 int。

更新

我已经更正了这句话,指出检查员应该返回错误。问题的关键是为什么 Eclipse 在检查器中调用 intValue,而不是讨论 int 或 Integer。

4

2 回答 2

0

我运行了完全相同的代码,它运行得很好,没有任何null pointer异常。也许代码中的其他地方还有其他问题。

于 2013-09-04T13:10:30.817 回答
0

通过检查 Integer 对象,eclipse 尝试调用

intValue()

Integer类的函数,它返回类的整数值,因为 java 希望以与比较int相同的方式比较Integer

例子:

 int i = 5;
 if (i == 6){
    //Will never enter here
 }

会给你同样的结果

 Integer i = new Integer(5);
 if (i == 6) {
    //Will never enter here
 }

因为java会为你做自动拆箱。

如果Integer为 null,则调用函数intValue()从 Integer i 转换为 Camparison 的数字 5 会引发空指针异常

于 2013-09-04T10:33:51.540 回答