我在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)
不行。
答案 0 :(得分:11)
因为您使用的是资本-B Boolean
,它是一个对象,所以==
使用引用相等语义。
你应该做的只是
if (r)
没有必要测试它是否等于真。或者内联它:
if (isSyncRequired(s)) {
答案 1 :(得分:1)
==
通过引用进行比较。您正在将Boolean
对象与boolean
值进行比较。
改为使用if (r)
。
答案 2 :(得分:1)
您应该取消Boolean
值。尝试
if (r.booleanValue())
或
if (r.booleanValue() == true)