Maison > Java > javaDidacticiel > `instanceof` vs `Class.isAssignableFrom(...)` : quand devriez-vous utiliser Which en Java ?

`instanceof` vs `Class.isAssignableFrom(...)` : quand devriez-vous utiliser Which en Java ?

DDD
Libérer: 2024-11-29 11:36:11
original
780 Les gens l'ont consulté

`instanceof` vs. `Class.isAssignableFrom(...)`: When Should You Use Which in Java?

Comprendre la différence entre instanceof et Class.isAssignableFrom(...)

Déterminer la relation entre deux classes est crucial dans l'orientation objet programmation. Java propose deux approches distinctes à cet effet : instanceof et Class.isAssignableFrom(...).

1. instanceof

L'opérateur instanceof vérifie si un objet est une instance d'une classe particulière ou de ses sous-classes. Il prend la forme :

a instanceof B
Copier après la connexion

où a est l'objet et B est la classe.

Points clés :

  • Dépendance au moment de la compilation : instanceof nécessite de connaître le type de B au moment de la compilation.
  • Null Sécurité : Si a est nul, instanceof renvoie false sans lever d'exception.

2. Class.isAssignableFrom(...)

La méthode Class.isAssignableFrom(...) compare une classe spécifiée avec une autre classe ou interface. Il prend la forme :

B.class.isAssignableFrom(a.getClass())
Copier après la connexion

Points clés :

  • Flexibilité d'exécution : Class.isAssignableFrom(...) permet une vérification de type dynamique, où B peut changer pendant l'exécution.
  • Gestion des exceptions : Si a est nul, Class.isAssignableFrom(...) lève une exception.

Comparaison

Les deux approches effectuent essentiellement la même vérification, déterminant si a peut être attribué à un variable de type B. Cependant, leur principale différence réside dans le comportement d'exécution :

  • Si a est nul, instanceof renvoie false, tandis que Class.isAssignableFrom(...) lève une exception.
  • Class.isAssignableFrom(...) permet une vérification de type dynamique, tandis que instanceof nécessite une connaissance de la classe au moment de la compilation.

En fin de compte, le choix entre instanceof et Class.isAssignableFrom(...) dépend des exigences spécifiques de votre application. Si la sécurité des types au moment de la compilation est essentielle, instanceof fournit une option pratique. Cependant, si une flexibilité d'exécution est souhaitée, Class.isAssignableFrom(...) est un choix plus approprié.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal