[英]Why Boolean TRUE is not TRUE?
我在debbuging我的Android應用程序時發現了奇怪的行為。
有表達式:
if (r == true)
其中var r
的值為true
但整個語句為false。 我嘗試使用對象Boolean
和原始類型boolean
。
我確信我犯了一些基本錯誤。
這是debbuger的屏幕。
編輯:
我正在使用java.lang.Boolean
。
方法isSyncRequired
返回Boolean.TRUE
並在if-else塊中進行比較。
if(isSyncRequired(s))
if (r)
if (r == true)
不要工作。
因為你使用的是大寫B Boolean
,它是一個對象,所以==
使用引用相等語義。
你應該做的只是
if (r)
沒有必要測試它是否等於真。 或者內聯它:
if (isSyncRequired(s)) {
==
按參考比較。 您正在將Boolean
對象與boolean
值進行比較。
使用if (r)
代替。
您應該取消裝箱Boolean
值。 嘗試
if (r.booleanValue())
要么
if (r.booleanValue() == true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.