2

我在调试我的 android 应用程序时发现了奇怪的行为。

有表达:

if (r == true)

其中 varr具有值true,但整个语句是错误的。我尝试使用对象Boolean和原始类型boolean

我确定我犯了一些基本错误。

这是调试器的屏幕。

在此处输入图像描述

编辑:

我正在使用java.lang.Boolean.

方法isSyncRequired返回Boolean.TRUE并在 if-else 块中进行比较。

if(isSyncRequired(s))
if (r)
if (r == true)

不工作。

4

3 回答 3

11

因为您使用的是大写字母 B Boolean,它是一个对象,所以==使用引用相等语义。

你应该做的只是

if (r)

无需测试它是否等于 true。或内联它:

if (isSyncRequired(s)) {
于 2013-02-19T22:02:03.287 回答
1

==通过引用进行比较。您正在将一个Boolean对象与一个boolean值进行比较。

改为使用if (r)

于 2013-02-19T22:03:02.477 回答
1

您应该将Boolean值拆箱。尝试

if (r.booleanValue())

或者

if (r.booleanValue() == true)
于 2013-02-19T23:13:15.203 回答