以下代码段使用简单的 Java 代码。
package pkg;
final public class Main
{
final private class Demo
{
private Integer value = null;
public Integer getValue()
{
return value;
}
}
private Integer operations()
{
Demo demo = new Demo();
return demo==null?new Integer(1):demo.getValue();
}
public static void main(String[] args)
{
Main main=new Main();
System.out.println("Value = " + String.valueOf(main.operations()));
}
}
上面的代码按预期工作,没有问题,并显示Value = null
在控制台上。
在下面的return
声明中,
return demo==null?new Integer(1):demo.getValue();
由于demo
类型Demo
为not null
的对象,其后的表达式被执行,该表达式在:
返回的内部类中demo.getValue()
调用,最后,它被转换为 String 并显示在控制台上。getValue()
Demo
null
但是当我修改operations()
如下所示的方法时,
private Integer operations()
{
Demo demo = new Demo();
return demo==null?1:demo.getValue();
}
它抛出NullPointerException
。如何?
我的意思是当我使用这个return
语句时
return demo==null?new Integer(1):demo.getValue();
它有效(不抛出NullPointerException
)
当我使用以下类似 return
的语句时
return demo==null?1:demo.getValue();
它导致NullPointerException
. 为什么?