Quelle est la meilleure façon de déterminer le type de données dans groovy?Groovy/grails comment déterminer un type de données?
Je voudrais formater la sortie différemment si elle est une date, etc.
Quelle est la meilleure façon de déterminer le type de données dans groovy?Groovy/grails comment déterminer un type de données?
Je voudrais formater la sortie différemment si elle est une date, etc.
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)
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()
.
somObject instanceof Date
devrait être
somObject instanceOf Date
Ce n'est pas correct. 'instanceof' devrait être en minuscule. – cdeszaq
simple façon groovy pour vérifier le type d'objet:
somObject in Date
Peut également être appliqué aux interfaces.
solution la plus groove jusqu'ici – user615274
Vous pouvez utiliser l'opérateur de membre isCase() qui est une autre façon groovy:
assert Date.isCase(new Date())
'instanceof' est idéal pour le filtrage basé sur l'interface. – cdeszaq
Au moins dans le dernier Groovy (2.3.7), nous pouvons également écrire unObject.class – loloof64
@LaurentBERNABE qui fonctionne dans la plupart des cas, mais pas dans tous, par ex. une instance 'Map' –