Warum löst dies eine Ausnahme aus?
%Vor%wenn ich das nicht tue ...
%Vor%Weil ["[email protected]"] zu einer ArrayList, nicht zu einem Array ausgewertet wird:
%Vor%OTOH Ihre Deklaration erstellt ein Array von Objekten:
%Vor% und die Methode, die Sie aufrufen, benötigt ein Array. Sie können ein Array mit as
erstellen:
Die Groovy-Entwickler haben es sich zur Aufgabe gemacht, Datenstrukturen auf höherer Ebene wie Listen idiomatisch zu gestalten, während Arrays für die Interoperabilität mit Java vorhanden sind.
In seinem Interview in Coders at Work spricht Guy Steele über Entscheidungen, die beim Entwerfen einer Sprache getroffen wurden:
"Da ist dieses Huffman-Codierungsproblem. Wenn Sie etwas übersichtliches machen, etwas wird als Konsequenz dadurch ausführlicher sein müssen. Also rein eine Sprache zu entwerfen, ist eines der Dinge, über die du nachdenkst: Was sind? die Dinge, die ich sehr leicht sagen möchte und sehr leicht zu bekommen Recht?' Aber mit dem Verständnis, dass, die Charaktere oder Symbole für diesen Zweck, du wirst etwas anderes machen müssen ein bisschen schwerer zu sagen. "
Es sieht sicherlich so aus, als wären Groovy-Listen prägnanter geworden, mit dem Nebeneffekt, dass Arrays verbaler werden.
Nathan hat den Grund für dieses Verhalten auf dem Sprachniveau bereits (richtig) erklärt. Ich möchte nur eine Abstraktionsebene nach oben verschieben: Warum benutzen Sie Spring's MessageSource
direkt? In Grails gibt es ein message
-Tag , das die Nachrichtenquelle umschließt: