Using Static String in Groovy Switch-Case Statement
case, groovy, string, switch-statement
Solution
I know this doesn't answer your question of why your code is not working for you, but if you want a slightly groovier/better way to implement your code you could throw your values into a map so then you wouldn't have to use a `switch` statement:
class ValueTests {
public static final String HIGH_STRING = "high"
public static final String LOW_STRING = "low"
@Test
void stuff() {
assert "string was high" == getValue("high")
assert "string was low" == getValue("low")
assert "no match" == getValue("higher")
}
def getValue(String key) {
def valuesMap = [
(HIGH_STRING): "string was high",
(LOW_STRING):"string was low"
]
valuesMap.get(key) ?: "no match"
}
}
A little cleaner than a `switch` IMO.
Problem
I'm a Java programmer who's dabbling in Groovy. You'll note in my code that I mix in some Java-specific syntax, which is supposedly A-Okay with Groovy. Can anyone explain to me why Groovy won't accept a static variable as a `CASE` parameter? Or if it will, can you see what I'm doing wrong here? ``` 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. ```