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

私はこのコードを書き、正常に実行しました。しかし、私は(...)の一部について警告を受けました。警告は「デッドコード」です。それは私にとって興味深いことです。何か考えがありますか?ありがとう

4

5 に答える 5

6

「デッドコード」とは、決して実行されないコードです。ほとんどの場合、条件の1つがどこかにハードコーディングされfalseており、内部の条件がif常にfalseになっています。

于 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

ブロック内のコードに到達することはありません。その理由は、条件の1つが常に偽である可能性が最も高いです。

于 2012-08-14T12:27:02.447 に答える
0

myCondition1、myCondition2、およびmyCondition3の1つ以上が常にfalseの場合(private const bool myCondition1 = false;のように)、if内のそのコードは実行されません。

于 2012-08-14T12:27:13.913 に答える
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 に答える