Je voudrais savoir quelle est la méthode robuste de vérification, si une variable est de type chaîne ou gstring. Je suppose que c'est différent de Java pur:
def var = someFunc();
if (var instanceof String || var instanceof GString) {
String str = var;
}
Je demande, car je ne veux pas être surpris d'avoir manqué une fonctionnalité spécifique de Groovy qui provoque un bug difficile à déboguer.
Les tests Instanceof devraient fonctionner:
assert "fasd" instanceof String
assert "${this}" instanceof GString
Une autre façon consiste à utiliser le mot clé in
:
groovy:000> t = "hello"
===> hello
groovy:000> t in String
===> true
groovy:000> "${t}" in GString
===> true
Le mot clé in
est l'opérateur d'appartenance et est traduit en un appel isCase
sur la classe:
groovy:000> String.isCase(t)
===> true
groovy:000> GString.isCase("${t}")
===> true
Vous pouvez également utiliser le .class
méthode sur un objet Groovy
def a = "test"
def b = "${a}"
assert a.class == String
assert b.class == org.codehaus.groovy.runtime.GStringImpl
Notez qu'un GString
est facilement évalué et transformé en String
, par exemple par des appels à toString
.
Si vous recherchez des fonctionnalités de type modèle pour avoir des définitions de chaînes réutilisables à transmettre et à exploiter, vous devriez envisager le moteur de modèle Groovy
.