Quel est le moyen le plus simple de faire "is" en Java?
-
04-07-2019 - |
Question
De nombreuses langues ont la possibilité de vérifier si un objet est d'un certain type (y compris les sous-classes parent), implémenté avec 'is' et utilisé comme ceci:
if(obj is MyType)
Ou un peu plus fastidieux, vous pouvez vérifier dans d’autres langues en utilisant le mot-clé 'as' pour effectuer une conversion douce et en vérifiant si le résultat est null.
Je n'ai pas utilisé Java depuis des années et je me rends compte, mais Java a sûrement un moyen de le faire facilement sans fouiller dans les API de Reflection?
Merci d'avance pour vos réponses. J'ai effectué une recherche à la fois ici et ailleurs, mais les mots-clés impliqués sont si génériques que même si je suis sûr que la réponse est simple, googler est difficile.
La solution
if (objectReference instanceof type){
//Your code goes here
}
Plus d'infos ici .
Autres conseils
Vous ne pouvez utiliser instanceof
qu'avec un littéral de classe:
Class type = String.class;
if (myObj instanceof String) // will compile
if (myObj instanceof type) //will not compile
L'alternative consiste à utiliser la méthode Class.isInstance
if (type.isInstance(myObj)) // will compile
obj instanceof TargetType
renvoie true uniquement si TargetType
est dans la hiérarchie des types contenant obj
.
Voir le Didacticiel de Sun