0
我嘗試的東西,我寫了這個代碼,空的instanceof對象
boolean x = null instanceof Object;
Object o = null;
boolean y = o instanceof Object;
這是毫無疑問都返回false。令我驚訝的是,IntelliJ IDEA抱怨y
總是false
,但沒有說任何關於x
的內容。這是否意味着什麼?
我嘗試的東西,我寫了這個代碼,空的instanceof對象
boolean x = null instanceof Object;
Object o = null;
boolean y = o instanceof Object;
這是毫無疑問都返回false。令我驚訝的是,IntelliJ IDEA抱怨y
總是false
,但沒有說任何關於x
的內容。這是否意味着什麼?
這可能意味着IDEA代碼分析器不支持這種「用例」。分析器可能(有意)編碼以檢測先前被分配給null
的變量的使用,因爲這在編碼時是很常見的錯誤,但是null instance of Object
這種情況並不常見,因爲很少有程序員會寫這個其實意味着別的東西。
有很多像這樣的構造不能被靜態代碼分析器如Sonar,Eclipse或IDEA正確檢測到。我不會擔心太多,只是要知道,IDE不能發現你在代碼中犯的每一個錯誤。
所以,沒有其他的實施。呵呵。 –
IntelliJ給了什麼信息,*完全*?也許這暗示着雖然'null instanceof Object'很明顯是錯誤的,'o instanceof Object'僅僅是由於它已經執行的代碼分析而是假的 - 如果你很早就寫出了「o」的聲明,這可能表明一個錯誤,因爲你不打算檢查保證爲空的東西。 –
你在其他情況下使用y嗎?如果是這樣,那麼InterlliJ會報告它,因爲它不是一個變量,它只是一個普通的「錯誤」。你最好應該使用'false'而不是含有變量的明顯值。 – Imran