Debido [ "[email protected]"] evalúa a un ArrayList, no una matriz:
groovy:000> o = ["asdf"]
===> [asdf]
groovy:000> o.getClass()
===> class java.util.ArrayList
otoh su declaración crea una matriz de objetos:
groovy:000> Object[] args = ["asdf"]
===> [Ljava.lang.Object;@14e113b
yt El método que estás llamando necesita una matriz. Puede crear una matriz usando as
:
Object[] args = ["asdf"] as Object[]
Los creadores hicieron un maravilloso punto de hacer que las estructuras de datos de alto nivel como las listas idiomáticas, mientras que las matrices están presentes para la interoperabilidad con Java.
En su entrevista en codificadores en el Trabajo de Guy Steele habla de elecciones hechas en el diseño de un lenguaje:.
"Hay un problema de codificación de Huffman Si haces algo conciso, algo va a tener que Por lo tanto, en diseñando un idioma, una de las cosas que piensas es, '¿Cuáles son las cosas que quiero hacer muy fácil de decir y muy fácil de obtener ¿verdad?' Pero en el entendimiento de que, habiendo usado caracteres o símbolos para ese propósito, vas a tener que hacer algo más un poco más difícil de decir ".
Parece ciertamente que las listas de Groovy fueron más concisas, con el efecto secundario de que las matrices se volvieron más prolijas.
tiene sentido, pero parece que el método complicado de usar, supongo que esperaba que fuera más "maravilloso" –
Se podría cambiarlo a ["[email protected]"]. toArray(). No mucho mejor, pero al menos está en línea. –