2017-02-26 188 views
0

我嘗試的東西,我寫了這個代碼,空的instanceof對象

boolean x = null instanceof Object; 
Object o = null; 
boolean y = o instanceof Object; 

這是毫無疑問都返回false。令我驚訝的是,IntelliJ IDEA抱怨y總是false,但沒有說任何關於x的內容。這是否意味着什麼?

+3

IntelliJ給了什麼信息,*完全*?也許這暗示着雖然'null instanceof Object'很明顯是錯誤的,'o instanceof Object'僅僅是由於它已經執行的代碼分析而是假的 - 如果你很早就寫出了「o」的聲明,這可能表明一個錯誤,因爲你不打算檢查保證爲空的東西。 –

+1

你在其他情況下使用y嗎?如果是這樣,那麼InterlliJ會報告它,因爲它不是一個變量,它只是一個普通的「錯誤」。你最好應該使用'false'而不是含有變量的明顯值。 – Imran

回答

2

這可能意味着IDEA代碼分析器不支持這種「用例」。分析器可能(有意)編碼以檢測先前被分配給null的變量的使用,因爲這在編碼時是很常見的錯誤,但是null instance of Object這種情況並不常見,因爲很少有程序員會寫這個其實意味着別的東西。

有很多像這樣的構造不能被靜態代碼分析器如Sonar,Eclipse或IDEA正確檢測到。我不會擔心太多,只是要知道,IDE不能發現你在代碼中犯的每一個錯誤。

+0

所以,沒有其他的實施。呵呵。 –