Mit Static String Groovy Switch-Case-Anweisung

Ich bin ein Java-Programmierer, der Dilettantismus in Groovy. Sie sehen, dass in meinem code, den ich mischen Sie einige Java-spezifische syntax, die angeblich die A-Okay mit Groovy.

Kann jemand mir erklären, warum Groovy kann nicht sein, dass eine statische variable als CASE parameter? Oder wenn es, können Sie sehen, was mache ich hier falsch?

public static final String HIGH_STRING = "high";
public static final String LOW_STRING  = "low";

... //other code, method signature, etc.

def val = "high";
switch (val) {

   case HIGH_STRING:
     println("string was high"); //this won't match
     break;

   case LOW_STRING:
     println("string was low");  //this won't match
     break;

   //case "high":
   // println("string was high"); //this will match because "high" is a literal
   // break;

   default:
     println("no match");
}

... //other code, method closeout, etc.
  • Ihr Testfall für mich funktioniert. Bitte poste einen vollständigen test, wo es scheitert. Auch, welche version von groovy sind Sie?
  • Funktioniert bei mir auch 🙂
  • Sie Jungs sind richtig. Ich arbeite in einem Grails-app, und ich Tue dies switch in einer service-Klasse. Ich fügte hinzu, die public static final Erklärungen, während meine Anwendung läuft, und der Gral erschien, um die Aktualisierung der Klassen entsprechend. Ich fand, dass es nicht (komischerweise nur auf die public static final vars, als andere code-änderungen wurden unter). Ich habe einen frischen Neustart meiner app, und jetzt funktioniert es.
InformationsquelleAutor Marc | 2012-05-03
Schreibe einen Kommentar