2
    if (myCondition1 && myCondition2 && myCondition3)
    {
    ...
    }

我编写了这段代码并成功运行。但我收到了关于(...)部分的警告。警告是“死代码”。这对我来说很有趣。你有什么想法吗?感谢你

4

5 回答 5

6

“死代码”是永远不会执行的代码。很可能您的条件之一被硬编码到false某个地方,从而使条件内部if始终为假。

于 2012-08-14T12:26:18.377 回答
3

死代码意味着它永远不会执行。例如

void someMethod() {
    System.out.println("Some text");
    return;
    System.out.println("Another Some text"); // this is dead code, because this will never be printed
}

在您的条件检查的情况下相同,例如

String obj = "";
if(obj == null && obj.equals("")) { // here you get warning for Dead code because obj is not null and first condition is false so obj.equals("") will never evaluate

}
于 2012-08-14T12:26:36.183 回答
0

这可能由于多种原因而发生。整个if块都死了,由以下原因引起:

boolean condition1 = true;
boolean condition 2 = !condition1;

if(condition1 && condition2) {
    //This code is all dead
    Foo f = fooFactory();
    f.barr(new Bazz());
}

或者您使用,或之if类的东西无条件地离开该块,如下所示:returnbreakcontinue

for(Foo f : foos) {
    if(true) {
        f.barr(new Bazz());
        break;
        //Everything after here is dead
        System.out.println("O noes. I won't get printed :(");
    }
}
于 2012-08-14T12:31:14.017 回答
0

永远不会到达块内的代码。原因很可能是其中一个条件总是错误的。

于 2012-08-14T12:27:02.447 回答
0

如果 myCondition1、myCondition2 和 myCondition3 中的一个或多个始终为 false(如 private const bool myCondition1 = false;),那么 if 中的代码将永远不会被执行。

于 2012-08-14T12:27:13.913 回答