println args
println args.size()
println args.each{arg-> println arg}
println args.class
if (args.contains("Hello"))
println "Found Hello"
когда работал, дают следующую ошибку:
[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]
почему я не могу сделать contains
?
Поскольку args
равно String []
, но не List
, вы можете использовать
if (args.grep('Hello'))
println "Found Hello"
Это потому, что args - это массив String (как в Java), а не String, взгляните на результат:
print args.getClass()
>>class [Ljava.lang.String;
Обратите внимание на [L обозначение.
Обычная строка приведет к следующему:
>>class java.lang.String
Контейнеры Groovy не имеют операции contains () (есть в String), но java.lang.Object Groovy SDK имеет операцию grep () (показано на первом Ответить).