這是我的代碼。我設置爲null這個引用,那麼爲什麼它打印不是空集這個== null在java中,之後也執行爲什麼繼續?
Test.java
try
{
new Test().setNull();
System.out.println("not null set");
}
catch (Exception e)
{//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
public void setNull()
{
setNull(this);
}
public void setNull(Object thisRef)
{
thisRef = null;
}
輸出: 不是空集
'null'不導致異常,變量可以是'null'。嘗試在您將'Test'對象設置爲'null'後調用一個方法,這會導致異常。 –
另外,您只是操作傳入對象的本地引用。調用者仍然有參考,所以它不會變得無法訪問。你可以將對象的引用分解爲自己的唯一方法是直接賦值給'this',但是由於'this'是一個語言關鍵字,而不是一些奇怪的,隱含的隱藏成員,所以你不能用它作爲左邊一項任務。 – jpm
@HunterMcMillen設置爲null不會導致「NPE」。即使在設置null之後,調用同一個類的另一個方法也不會通過NPE,因爲'this'不是'null'。請看我的例子。 – sunil