2017-02-01 87 views
0

爲什麼當我試圖做到以下幾點:(在javaJava字符串等於文字警告信息

if (reason.equals("time")) { // my code } 

的IDE顯示我這個警告消息:

方法調用「(?) reason.equals(「time」)'可能產生'java.lang.NullPointerException'

我找不到對此警告消息的抽象解釋。

+1

這是告訴你,在這個代碼中,'reason'可能是'null';如果是的話,你的程序會拋出異常。 – khelwood

+0

如果你知道'NullPointerException'是那個警告不應該很難理解。因此,我假設你會想要閱讀[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- i-fix-it) – Thomas

回答

6

如果reasonnull,您基本上有null.equals("time"),這將導致NullPointerException。要解決這個問題,只需交換兩個:"time".equals(reason);

5

這是你的IDE可愛。如果reasonnull那麼你很可能會得到java.lang.NullPointerException

常見的解決方法是使用java.util.Objects.equals(reason, "time")。該功能將爲您執行任何null檢查。

雖然,對於這種特殊情況下,酷貓,知道文字是肯定null,將改寫爲尤達表達

"time".equals(reason)

參考:https://en.wikipedia.org/wiki/Yoda_conditions

+1

「Yoda Expression」 - 從未聽說過它被稱爲之前,但肯定適合;) – Thomas

+0

@Thomas:我已經添加了一個引用,在撰寫本文時,它包含Java字符串的情況。 – Bathsheba