Aucune raison de préférer getClass() sur instanceof lors de la génération .equals()?

J'utilise Eclipse pour générer .equals() et .hashCode(), et il y a une option intitulée "Utilisation" instanceof "pour comparer les types". La valeur par défaut pour cette option pour être désactivée et l'utilisation .getClass() de comparer les types. Est-il une raison que je préférerais .getClass() sur instanceof?

Sans l'aide de instanceof:

if (obj == null)
  return false;
if (getClass() != obj.getClass())
  return false;

À l'aide de instanceof:

if (obj == null)
  return false;
if (!(obj instanceof MyClass))
  return false;

J'ai l'habitude de vérifier la instanceof option, puis retirer le "if (obj == null)" vérifier. (Il est superflu, puisque les objets nuls échouera toujours instanceof.) Est-il une raison que c'est une mauvaise idée?

  • L'expression x instanceof SomeClass est faux si x est null. Par conséquent, la deuxième syntaxe se complique pas besoin de la valeur null est à vérifier.
  • Oui, le paragraphe immédiatement après l'extrait de code dit cela ainsi. C'est dans l'extrait de code parce que c'est ce que Eclipse génère.
InformationsquelleAutor Kip | 2009-02-27