【发布时间】:2012-07-16 14:01:49
【问题描述】:
我正在编写一个做很多事情的安卓应用。我最近重构了我的代码以获得更好的结构,但突然我遇到了一个非常奇怪的问题。
handleRequest(String str)
{
boolean foo = executeCommand(str);
this.publishProgress("FOO1: " + foo);
if (foo == false);
{
this.publishProgress("FOO2: " + foo);
sendString("Failed to execute: " + str);
}
this.publishProgress("FOO3: " + foo);
sendEOM();
}
上面的代码应该执行一个命令,如果命令执行正确,则存储'foo'。此代码位于 Android AsyncTask(线程)中,因此我使用“publishProgress”来显示祝酒词。
我一直在浏览调试器,FOO 是真的!祝酒词也表明 FOO 在整个过程中都是真实的。但是,它继续前进并跳转到 IF 块内并执行它。我以前从未见过这种情况,我认为这是 Java 的问题。我正在单步执行函数“executeCommand”,看起来它也在跳过返回语句。
我已经在虚拟设备和真实设备上运行了代码,他们都这样做了。
有什么想法吗?我在这里完全不知所措。
【问题讨论】:
-
去掉if语句后的分号
-
不是您的问题,而是使用
if (!foo)更简洁明了。 -
@dimo414 是的,当我发布这篇文章时,我感到很沮丧,所以我把它改成了“FOO == FALSE”,这样它就很明确了,我看不出有什么问题。