Maison > Java > javaDidacticiel > `getClass()` contre `instanceof` dans `equals()` : lequel devriez-vous utiliser ?

`getClass()` contre `instanceof` dans `equals()` : lequel devriez-vous utiliser ?

Linda Hamilton
Libérer: 2024-12-03 10:59:08
original
695 Les gens l'ont consulté

`getClass()` vs. `instanceof` in `equals()`: Which Should You Use?

Devriez-vous utiliser 'getClass()' ou 'instanceof' dans votre méthode .equals() ?

Lors de la génération de .equals() méthodes utilisant Eclipse, vous avez la possibilité d’utiliser « instanceof » ou « .getClass() » pour comparer les types. Par défaut, Eclipse utilise « .getClass() », ce qui laisse de nombreux programmeurs se demander s'ils doivent passer à « instanceof ».

Quelle est la différence ?

.getClass() compare directement le type d'exécution de deux objets, tandis que instanceof vérifie si un L'objet est une instance d'une classe ou d'une interface particulière. Par exemple :

if (getClass() != obj.getClass()) // Using getClass()
if (!(obj instanceof MyClass)) // Using instanceof
Copier après la connexion

Laquelle devriez-vous utiliser ?

Selon l'expert Java Josh Bloch, « instanceof » est l'approche préférée car elle ne restreint pas égalité avec le même type d’exécution. Cela signifie que vous pouvez étendre une classe et ajouter des méthodes sans affecter l'égalité des objets partageant les mêmes aspects importants.

De plus, cela s'aligne sur le principe de substitution de Liskov, qui stipule qu'une sous-classe doit pouvoir être utilisée à la place de sa superclasse sans casser le code. L'utilisation de '.getClass()' viole ce principe, entraînant un comportement inattendu dans des collections comme HashTable.

En résumé, 'instanceof' offre plus de flexibilité et est recommandé pour les méthodes .equals(). Bien que vous puissiez supprimer la vérification « if (obj == null) » avec « instanceof », il est généralement conseillé de la conserver pour plus de clarté et d'exhaustivité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal