2017-01-22 10 views
1

Мне было интересно, почему следующее неявное тестирование для boolean true не дает предупреждения о мертвом коде, в то время как явное тестирование дает один?Почему существует предупреждение о мертвом коде в явном логическом тесте, но не на неявном

Например:

public void noDeadCodeWarning() 
{ 
    final boolean x = false; 
    if (x) 
    { 
     System.out.println("This is dead code"); // no warning 
    } 
} 

public void hasDeadCodeWarning() 
{ 
    final boolean x = false; 
    if (x == true) 
    { 
     System.out.println("This is dead code"); // yes warning 
    } 
} 

Я использую затмение Марс. и Java 1.8

+3

Java делает не Предупреждение- это особенность IDE. –

+0

Потому что разработчик eclipse решил это сделать. – luk2302

+0

ОК. Это объясняет, почему, если я изменил «if» на «while», в обоих случаях указывается недостижимая ошибка кода. –

ответ

0

Во втором методе IDE оценивает выражение так, чтобы оно говорило, что это мертвый код, но в первом методе вы передали логическое значение.

Согласно IDE, если заявление необходимо логическое значение, как условия, так что не оценивает