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, diepublic 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 diepublic static final
vars, als andere code-änderungen wurden unter). Ich habe einen frischen Neustart meiner app, und jetzt funktioniert es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, das beantwortet nicht deine Frage, warum dein code nicht funktioniert für Sie, aber wenn Sie möchten, eine leicht groovier/besseren Weg, um Ihre code, den Sie werfen konnte Ihre Werte in einer Karte, so dann würden Sie nicht haben, verwenden Sie eine
switch
Aussage:Ein wenig sauberer als ein
switch
IMO.