36 votes

Entretien: Java Equals

On m'a posé cette question en entrevue. Lequel des suivants est préférable d'utiliser

  MyInput.equals("Something");   
 

Ou

 "Something".equals(MyInput);
 

Merci

59voto

Jigar Joshi Points 116533

J'irais pour

 "Something".equals(MyInput);
 

dans ce cas, si MyInput est null alors il ne jettera pas NullPointerException

Ici, nous sommes sûrs que l’objet sur lequel equals() va invoquer est NOT NULL .

Et si vous vous attendez à ce que NullPointerException de votre code prenne une décision ou le jette / emballe, alors optez pour le premier choix.

21voto

Ryan Fernandes Points 3938

Pour être le contrarian.... :)

La première ligne peut se bloquer si MyInput est nul, mais c'est juste un code-facilité de programmation (généralement avec une gueule de bois C) utiliser quand ils ne veulent pas d'affirmer que "MyInput" peut être null.

Si la deuxième option est utilisée, alors peut-être que cette ligne ne cause pas une exception NullPointerException, mais les lignes suivantes pourraient.

Je crois que c'est mieux de connaître l'état de vos variables, plutôt que de s'appuyer sur un code-construction qui soulage votre conscience.

3voto

Daniel Points 3711

Le premier relèvera de NullPointerException si MyInput est null , tandis que le dernier retournera juste false , de sorte que le dernier peut être préférable certains cas (ou peut-être l'ancien, si vous ne vous attendez pas à ce que MyInput soit nul et que vous souhaitiez échouer rapidement).

1voto

Legs Points 131

Si vous voulez être un vrai malin, vous pouvez indiquer la possibilité que MyInput soit une sous-classe spéciale de String ayant écrasé les equals et hashcode méthodes. Dans ce cas, la commande de la déclaration est d’une importance vitale.

Voici un exemple concret: si vous voulez comparer des chaînes contenant des nombres et que vous souhaitez que les zéros soient ignorés? Par exemple, Lecture1 serait égal à Lecture01 .

1voto

Yanick Rochon Points 18537

Il est toujours préférable de tester une valeur constante égale une variable. Tout simplement parce que si la variable est null, alors vous obtenez une NullPointerException.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X