我(錯誤地)在Android項目中編寫了下面的代碼。Android Studio 2比較對象和布爾編譯成功時,它不應該?
for (Map<String, Object> occurrence : occurrences) {
if (occurrence.get("cancelled") == true) {
// don't display cancelled events
continue;
}
...
現在,據我所知,什麼應該發生有一個編譯器錯誤的error: incomparable types: Object and boolean
的效果,但是這並沒有發生。它編譯成功,並按我預期的方式行事。 (的確,這裏將要檢索的值將始終是盒裝的boolean
。)
我從來沒有注意到這一點,但是在我提交代碼之後的一段時間,一個合作者拉到他的系統,試圖編譯,並得到一個編譯錯誤。
發生這種情況後,我再次檢查確認,但我的代碼肯定是使用==
操作符,即使在清理和重建之後,它仍然編譯良好。
這是怎麼回事?是否有一些設置可以告訴Android Studio如何處理此問題?不同版本的java工具鏈允許或禁止這種語法?我已經得到了這個特殊的例子,只是用.equals
來替代比較,但我們需要確保將來當我們編寫/編譯/測試代碼時,它不會隨機地在另一個人的機!
哪個操作系統,IDE,編譯器版本等進行了你們倆運行? – shmosel
以下是可能有助於解釋的相關問題和答案。 http://stackoverflow.com/questions/16770403/equality-comparison-of-boolean-and-object-allowed。 –
@GeorgeMulligan好找;我不知道爲什麼我的搜索沒有看到那個。它看起來像其他問題確實有必要的線索來跟蹤這個問題,但問題是不同的,可能不是一個完全重複的(日食與android工作室),而且接受的答案是相當模糊的鏈接顯然腐爛。如果您想在Android Studio中寫下更改該設置的詳細信息,我會接受答案,否則我可能會在本週末自行解決。 – GrandOpener