Le code suivant me donne un "code mort" Avertissement d'Eclipse: L'avertissement apparaît à la ligne indiquant J'ai regardé le code mort et j'ai constaté que le Code Hat n'a aucun effet et sera donc ignoré par le compilateur Java. P> Cependant, cette racine est un champ privé de ma classe et donc Il est nécessaire pour la fonction de mon programme que je fais cela. p> est le compilateur va vraiment ignorer cela? Comment puis-je arrêter ça? Pourquoi pense-t-il que c'est du code mort? P> p> root = e; code>. p>
4 Réponses :
Si Le compilateur devrait fonctionner bien ... c'est juste un avertissement IDE. P>
Je suppose que Eclipse ferait une sorte de code de code (similaire à des outils de complexité cyclomatique) pour déterminer les chemins de code et trouver le "code mort" et "code inaccessible". p>
Je voudrais essayer de rafraîchir, puis de faire une propreté et de construire dans l'IDE. Si cela ne le résout pas, Eclipse peut simplement avoir un "faux positif" sur l'avertissement sur le code mort. Ne serait pas la première fois ... J'utilise à la fois Eclipse et Intellij Idea et j'avais vu les idées de manière incorrecte de manière incorrecte sur le code avant. Cependant, mon code compile toujours bien malgré l'avertissement de l'IDE. p> root code> est un champ privé de votre classe contenant la méthode
Ajouter code> que vous avez publié, alors, comme vous l'avez dit, la ligne
root = E; / code> ne doit pas être considéré comme du code mort par l'Eclipse IDE. p>
Il existe peut-être deux problèmes suivants: premièrement: le problème est que la racine de ligne n'est pas "utilisée" pour quoi que ce soit. Dans Findbugs, la même erreur est appelée "Magasin mort" qui, par Findbugs signifie: p>
Cette instruction attribue une valeur à une variable locale, mais la valeur n'est ni lue ni utilisée dans une instruction ultérieure. Souvent, cela indique une erreur, car la valeur calculée n'est jamais utilisée. P> blockQuote>
Notez que le mot clé ici est "souvent". p>
Je vérifierais et assurez-vous que la racine est utilisée comme vous vous attendez, et si cela pourrait être, comme mentionné par Philip Tenn, un faux positif. P>
Deuxièmement: votre problème peut être lié à Ce problème < / a>. p>
Regardez votre condition If. Ce code est mort car n == null code> sera toujours em> être faux. Vous venez de créer une nouvelle instance de
nœud
Notez que j'ai fait E code>, mais je vérifie
n code>.
Désolé, j'ai continué à regarder en arrière à l'original et à juré un tas de fois que j'ai vu n code> là-haut. Peut-être que j'étais un peu trop fatigué;)
est-ce le code réel?
Faites une propreté et reconstruisez le code, Eclipse bugs une fois de temps en temps.
Je pense que la seule fois que cela peut arriver est s'il serait impossible que la racine soit nulle. Peut-être regarder où cette variable est utilisée.
Quand je place ce code à Eclipse Indigo, je ne reçois aucun avertissement. ( Voici le code que j'ai utilisé à titre de comparaison; Je suis rempli dans le reste de la classe avec des ordures. )
Je ne suis pas sûr de savoir pourquoi c'est comme ça. Peut-être que c'est parce que je l'utilise différemment. J'ai une classe BST qui possède ce domaine privé et une méthode d'addition publique, puis un nœud classe à l'intérieur de cette classe. La méthode Ajouter n'est pas dans le nœud classe. Bien que je ne voie pas comment cela fait une différence.
Vous n'avez pas eu des avertissements que vous devriez utiliser des accolades frisées?
@austine Il peut être vrai que la racine ne pourrait jamais être nulle, mais n ne dirigera pas toujours à la racine car cette méthode est récursive. Il est fortement possible que N soit null plusieurs fois.