println args

println args.size()

println args.each{arg-> println arg}

println args.class

if (args.contains("Hello"))
    println "Found Hello"

Lors de l'exécution, donner l'erreur suivante :

[hello, somethingelse]
2
hello
somethingelse
[hello, somethingelse]
class [Ljava.lang.String;
Caught: groovy.lang.MissingMethodException: No signature of method: [Ljava.lang.
String;.contains() is applicable for argument types: (java.lang.String) values:
[Hello]

Pourquoi ne puis-je pas faire contains ?

9
groovynoob 12 mars 2010 à 19:11

2 réponses

Meilleure réponse

Parce que args est String[] mais pas List<String>

Vous pouvez utiliser

if (args.grep('Hello'))
    println "Found Hello"
16
Mykola Golubyev 12 mars 2010 à 19:16
Veuillez examiner un problème quelque peu similaire ici
 – 
AabinGunz
27 avril 2012 à 10:59

C'est parce que args est un tableau de String (comme en Java) et non une String, regardez le résultat de :

print args.getClass()

>>class [Ljava.lang.String;

Notez la notation [L.

Une chaîne normale entraînerait :

>>class java.lang.String

Les conteneurs Groovy n'ont pas l'opération contains() (String le fait), mais le java.lang.Object de Groovy SDK a l'opération grep() (affichée sur la première réponse).

1
3 revs 15 mars 2010 à 04:22