Groovy: vérifier au moment de l'exécution, si l'objet est une Chaîne de caractères
Je suis sur le point de surcharge de la leftShift opérateur et je voulais savoir comment faire pour vérifier si le paramètre "autres" est une Chaîne de caractères?
def leftShift(other){
if(other.getClass() instanceof String){
println other.toString() + " is a string!"
}
Mais cela ne fonctionne pas.. quelqu'un Peut-il m'aider?
OriginalL'auteur user944351 | 2012-12-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le test que vous utilisez normalement dans Java.
Lorsque vous appelez
other.getClass()
le résultat de la classe est java.lang.Class exemple, on pourrait comparer à l'encontre de String.class. Note autres peut être null dans lequel le test "d'autres instanceof String" a la valeur false.Mise à JOUR:
Voici un cas simple qui crée un Groovy GString exemple, n'est pas une chaîne de caractères exemple:
Sorties:
GStringImpl s'étend GString qui a des méthodes que faire se comporter comme un objet de type String et met en œuvre CharSequence l'interface de la classe String. Vérifier si autres objet est CharSequence qui est vrai si l'objet est une Chaîne de caractères ou GString instance.
String
etGString
avec le leftshift de l'opérateur, il peut être judicieux de testerCharSequence
:if (other instanceof CharSequence) { ...
Merci. CharSequence test simplifie.
OriginalL'auteur JasonM1
Il est
Que faites-vous?
rien, ne pas aller dans l'instruction if. Je n'ai pas vraiment définir une nouvelle instance d'une Chaîne, je n'ai que ça comme: "test". Peut-être que le problème est ici..
Oui le problème. Vous avez besoin de def str ="aaa"
néanmoins, est-il possible de vérifier le type de la "chaîne de test" de toute façon?
OriginalL'auteur user903772
Code écrit ne compile pas - vous êtes en manque une accolade. Que,
instanceof
fonctionne comme en Java, comme d'autres l'ont mentionné. Toutefois, en Groovy, je serais prudent avec la vérification deinstanceof
contreString
, comme c'est parfois ce qui semble êtreStrings
sont, en fait,GStrings
(voir docs, section "GStrings ne sont pas des Chaînes de caractères"). Exemple rapide:OriginalL'auteur Brian Henry