Instanceof versus Class.isAssignableFrom :
Naturellement, vous êtes curieux de connaître la distinction entre « une instance de B » et « B.class ». isAssignableFrom(a.getClass())'. Alors que les deux expressions évaluent si l'objet « a » est une instance de la classe « B » ou de ses sous-classes, des nuances subtiles existent :
Détermination au moment de la compilation par rapport à l'exécution :
-
instanceof: Cela nécessite de connaître la classe de 'B' au moment de la compilation. Cela signifie que la classe 'B' doit être déclarée et accessible dans la portée actuelle.
-
isAssignableFrom() : Contrairement à 'instanceof', elle offre une vérification dynamique, permettant à la classe 'B' à déterminer au moment de l'exécution. Cette flexibilité est inestimable dans les scénarios de polymorphisme et de chargement de classe dynamique. ' est nul, l'expression renverra false.
isAssignableFrom(): En revanche, si 'a' est nul, cela déclenchera une NullPointerException.
- Au-delà de ces différences :
En dehors de ces nuances, 'instanceof' et 'isAssignableFrom()' donne généralement des résultats identiques. Ils déterminent tous deux avec précision si un objet est une instance d'une classe donnée ou de ses sous-classes. Le choix entre eux dépend des exigences spécifiques et du caractère dynamique du projet.-
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!