groovy 字符串是否也隐式地是一个集合?

Is a groovy String also implicitly a Collection?

groovy 中的弱输入很棒,但是这个让我摸不着头脑:

myList = new java.util.ArrayList(['foo', 'foo', 'foobar', 'barfoo'])
myList.removeAll('foo')
println myList // prints [foobar, barfoo]

removeAll 需要一个 Collection 作为参数。 Docs。为什么当我发送 String 时第 2 行有效 - groovy 字符串是否也隐式地是一个集合?

而是 Groovy 提供了对 JDK Collection 接口的增强,其中之一是 Collection::removeAll(Object[] data),这允许这样的行为:一个元素 foo 似乎隐式转换为单项数组,如 varargs.

没有。 Groovy 添加了可以接受可变参数的 an extension method Collection.removeAll(Object[])。您的 'foo' 变成了单元素数组。

以后在这样的方法上打个断点,Step Into;您会确切地看到传入的值是什么,以及您是在进入扩展方法还是其他意外情况。