2010-01-13 8 views

Répondre

179

Pour déterminer la classe d'un objet vous suffit d'appeler:

someObject.getClass() 

Vous pouvez abréger cela someObject.class dans la plupart des cas . Cependant, si vous l'utilisez sur un Map, il essaiera de récupérer la valeur avec la clé 'class'. Pour cette raison, j'utilise toujours getClass() même si c'est un peu plus long.

Si vous voulez vérifier si un objet implémente une interface particulière ou étend une classe particulière (par exemple, date), utilisez:

(somObject instanceof Date) 

ou pour vérifier si la classe d'un objet est exactement une classe particulière (pas une sous-classe de celui-ci), utilisez:

(somObject.getClass() == Date) 
+2

'instanceof' est idéal pour le filtrage basé sur l'interface. – cdeszaq

+0

Au moins dans le dernier Groovy (2.3.7), nous pouvons également écrire unObject.class – loloof64

+4

@LaurentBERNABE qui fonctionne dans la plupart des cas, mais pas dans tous, par ex. une instance 'Map' –

3

Juste pour ajouter une autre option pour la réponse de Don, vous pouvez également utiliser encore la bonne méthode ancienne java.lang.Object.getClass().

-16

somObject instanceof Date

devrait être

somObject instanceOf Date

+8

Ce n'est pas correct. 'instanceof' devrait être en minuscule. – cdeszaq

26

simple façon groovy pour vérifier le type d'objet:

somObject in Date 

Peut également être appliqué aux interfaces.

+3

solution la plus groove jusqu'ici – user615274

0

Vous pouvez utiliser l'opérateur de membre isCase() qui est une autre façon groovy:

assert Date.isCase(new Date()) 
Questions connexes