簡體   English   中英

為什么這會引發空指針異常?

[英]Why is this throwing a null pointer 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”

如果調用myobj.equals(null) ,則不能保證該類的equals()的實現不會拋出NullPointerException ,並且如果myobjnull ,則您將得到一個NullPointerException嘗試在.equals()上調用.equals()null對象。


要測試null ,請使用以下代碼:

if (myobj == null)

要測試不為空,請使用以下命令:

if (myobj != null)

如果myobj為null,則將得到NullPointerException,如果不是,則控制台將輸出“ not null”。 那么,在每個調用周期中,變量customers和price中是否有任何內容?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM