if (myCondition1 && myCondition2 && myCondition3)
{
...
}
我编写了这段代码并成功运行。但我对(...)的一部分发出了警告。警告是“死代码”。这对我来说很有趣。你有什么想法吗? 谢谢你
答案 0 :(得分:6)
“死代码”是永远不会执行的代码。很可能你的一个条件被硬编码到某个地方的false
,使得if
内的条件始终为假。
答案 1 :(得分:3)
死代码意味着永远不会执行。 E.g。
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
}
答案 2 :(得分:0)
永远不会到达块中的代码。原因很可能是其中一个条件总是错误的。
答案 3 :(得分:0)
如果myCondition1,myCondition2和myCondition3中的一个或多个始终为false(如私有const bool myCondition1 = false;)那么if中的代码将永远不会被执行。
答案 4 :(得分: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
,return
或break
之类的内容离开continue
区块,如下所示:
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 :(");
}
}