Si j'essaie de faire un .equals () code> sur une chaîne nulle en Java, une exception de pointeur nulle sera lancée. Je me demande, si j'essaie de comparer si une chaîne est égale à une chaîne constante, puis-je faire ce qui suit: MY_CONSTANT_STRING.equals(aStringVariable)
6 Réponses :
Ceci est un idiome java standard appelé joknant un Etat Yoda a>. p>
Personnellement, je préfère gérer explicitement le boîtier NULL, mais la voie de YODA est utilisée beaucoup et tout programmeur Java expérimenté devrait pouvoir comprendre ce qui se passe immédiatement. C'est bien d'utiliser. P>
+1 Cause Je viens d'apprendre les conditions de Master Yoda grâce à cette réponse. Stackoverflow.com/questions/2349378/...
Qu'est-ce que vous avez, c'est bien. Il est même possible d'utiliser un littéral à chaîne.
if( (variable != null) && variable.equals("value") ) {
...
Les parenthèses autour de la variable! = NULL sont facultatifs Si vous souhaitez réduire le fouillis.
est-ce juste un code très médiocre? p> blockQuote>
Non, c'est la façon dont de nombreuses personnes codiraient la déclaration pour éviter les NPE. P>
Nope, il est généralement fait pour éviter les NPE. Cependant, je préfère généralement faire une vérification explicite pour NULL. P>
Je garderais le code "constants.equals (possiblenull)" sans le test NULL uniquement s'il s'agit d'une condition normale que la variable pourrait être null - par exemple parce qu'elle vient de sortir d'une carte de propriété.
Vous pouvez vous échapper sans vérifier NULL en instance de chèques - comme: p> mais si vous ne vous attendiez pas vraiment null, vous devez vérifier explicitement cela dans un si -Test et le gérer de manière appropriée. Il est généralement préférable d'attraper des erreurs de données tôt auparavant plutôt que plus tard. P> p>
Si vous êtes préoccupé par la qualité de votre code, écrivez une classe d'assistance qui prend soin du test d'égalité: puis utilisez-le comme ceci: p> Votre soi-disant constante pourrait arrêter d'être constante. Il peut être lu dans un fichier de configuration quelque temps à l'avenir. P> P>
Java 7 a une méthode d'assistance intégrée java.util.Object.equals (..) code> qui fait exactement ceci.
Si (o1 == null && o2 == null) retourne vrai; devrait simplement être: si (O1 == O2) retourne vrai;