为什么抛出空指针异常?

时间:2012-06-09 09:27:31

标签: java exception

我在for循环中有以下代码

MyClass myobj= new MyClass(customers, price);
System.out.println(myobj);
if (!myobj.equals(null)) { //same happesn with myobj != null
    System.out.println("not null");
}
myMethod(myobj);

myMethod正文是:

private void myMethod(MyClass myobj) {
   if (myobj.totalDemand()) {
      //bla bla
   }

在Junit中运行代码后,行“if(myobj.totalDemand())”抛出NullPointerException,但控制台打印“not null”

2 个答案:

答案 0 :(得分:3)

如果您致电myobj.equals(null),则无法保证该课程equals()的实施不会引发NullPointerException,如果myobjnull ,您将NullPointerException尝试在.equals()对象上调用null


要测试null,请使用以下代码:

if (myobj == null)

并测试not null,请使用:

if (myobj != null)

答案 1 :(得分:0)

如果myobj为null,则会出现NullPointerException,如果不是,则控制台将打印出“not null”。 那么,每个调用周期中的变量客户和价格是否存在任何变化?