2017-01-22 1 views
1

Je me demandais pourquoi les tests implicites suivants pour booléen vrai ne produisent aucun avertissement de code mort, alors que le test explicite en produit un?Pourquoi y a-t-il un avertissement de code mort sur le test booléen explicite, mais pas sur un test implicite

Par exemple:

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 
    } 
} 

J'utilise mars éclipse. et Java 1.8

+3

Java ne pas Avertissement- c'est une caractéristique de l'IDE. –

+0

Parce que le développeur d'eclipse a choisi de le faire. – luk2302

+0

OK. Cela expliquerait pourquoi si je change le "si" en "while", l'erreur de code inaccessible est donnée dans les deux cas. –

Répondre

0

Dans la deuxième méthode, l'EDI évalue l'expression de manière à dire qu'il s'agit d'un code mort, mais dans la première méthode, vous avez passé la valeur booléenne.

Selon IDE si besoin déclaration valeur booléenne comme condition pour ne pas évaluer