Pourquoi cette méthode (test) a-t-elle besoin d'une valeur de retour (elle est toujours vraie)? et quand j'ai ajouté une valeur de retour, elle met en garde comme () code> méthode p>
5 Réponses :
C'est le résultat de la profondeur de l'analyse que le compilateur fait. P>
L'analyse de la méthode return n'analyse pas la condition L'analyse du code mort est effectuée dans une passe distincte à l'analyse de retour de la méthode, qui fait une analyse plus approfondie qui ressemble à des conditions de branche intérieures. P>
Mes suppositions entièrement non informées, ce comportement est un artefact de la mise au point du compilateur; L'analyse de la méthode de retour est une partie essentielle de la compilation afin de vous assurer d'obtenir un programme valide à la fin, d'abord l'une des fonctionnalités principales mises en œuvre en premier. L'analyse de code mort est un «agréable à avoir», ce qui a été mis en œuvre plus tard, en utilisant des algorithmes plus sophistiqués (car les bits de compilateur de base ont été terminés par ce stade) P> si code> pour voir si elle est toujours vraie ou false, comme il ne serait généralement pas une constante de temps de compilation (sinon, vous n'écririez pas un si code> en premier lieu). Il voit simplement qu'il existe un si code> qui pourrait ou n'a pas pu être pris, et s'il n'est pas extrait, la méthode ne renvoie pas une valeur, d'où l'erreur. P>
+1 pour souligner que le compilateur n'évaluera pas si les conditions
Cette méthode ne fait rien, alors oui, c'est du code mort. Si la méthode revient toujours true, vous n'avez pas besoin de l'appeler, il suffit d'utiliser true code> à la place. P>
C'est juste un test. Je n'ai aucune méthode qui retourne toujours vrai :)
@hilal, le compilateur essaie de détecter des bugs courants, il n'essaie pas de gérer tous les cas théoriques possibles et d'essayer de déduire ce que vous voudrez peut-être arriver.
En Java, si vous spécifiez un type de retour (Boolean), vous devez spécifier explicitement la valeur, que ce soit toujours le même. Cela soulève la question suivante: Si c'est toujours la même chose, pourquoi retourner quoi que ce soit? Vous connaissez déjà la réponse dans le code d'appel.
Pourquoi pas seulement écrire: p> comme pour la deuxième partie de votre question, le compilateur voit que le deuxième chemin est jamais pris dans la déclaration de si et vous donne un avertissement à ce sujet. P> p>
Si vous testez quelque chose, cela peut être une valeur ou une autre valeur. Donc, vous ne pouvez pas garantir que cela va entrer dans l'instruction IF.
return someBoolean;
Si une déclaration sera toujours vraie, vous ne pouvez pas simplement supprimer la déclaration?
C'est juste un test. Je n'ai aucune méthode qui retourne toujours vrai :)
Donc, cela ne sera donc pas toujours vrai, il y a donc plus d'un chemin à travers le code, vous avez donc besoin d'une déclaration de retour pour chaque chemin
Il peut être utile d'indiquer quel compilateur Java vous utilisez.