當我需要通過方法close()
關閉Scanner
,我有一個代碼如下,可以解釋爲什麼我需要檢查if(input != null
)嗎?解釋掃描儀關閉()方法Java
Scanner input = new Scanner(new File("System.txt"));
...
Public void closeFile() {
if(input != null) {
input.close();
}
}
當我需要通過方法close()
關閉Scanner
,我有一個代碼如下,可以解釋爲什麼我需要檢查if(input != null
)嗎?解釋掃描儀關閉()方法Java
Scanner input = new Scanner(new File("System.txt"));
...
Public void closeFile() {
if(input != null) {
input.close();
}
}
可以在任何一個解釋爲什麼我需要檢查,如果(輸入!= NULL)嗎?
它只是一個null check
如果輸入爲空它會拋出NullPointerException異常。
考慮下面的代碼:
Scanner input = new Scanner(new File("System.txt"));
public void someMethod(){
input = doSomething(); //say doSomething() returns null
}
Public void closeFile()
{
if(input != null)
input.close();
}
現在,作爲輸入爲空,如果你試圖調用close()它會拋出NPE>
能input
設置爲null 別處?我注意到,分配不final
,因此它可以被重新分配(給予適當的訪問權限)
的情況是,我需要輸入由文本文件掃描儀並閱讀它,然後用上面提供的代碼在最後關閉它,所以......任何想法都可以嗎? – Twocode
對,輸入從文本文件中通過input.hasNext()讀取記錄,所以在此方法中,它將返回null,謝謝! – Twocode
@Twocold不是真的Scanner.hasNext()返回布爾值不是Scanner實例,我的意思是應該返回一個Scanner實例的doSomething()返回null – PermGenError
還有一個問題,如果我可以在someMethod()中檢查NPE,而不是closeFile()方法?謝謝 – Twocode