【发布时间】:2012-05-03 14:57:55
【问题描述】:
我是一名涉足 Groovy 的 Java 程序员。您会在我的代码中注意到,我混合了一些特定于 Java 的语法,这在 Groovy 中被认为是 A-Okay。
谁能向我解释为什么 Groovy 不接受静态变量作为 CASE 参数?或者如果可以,你能看到我在这里做错了什么吗?
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.
【问题讨论】:
-
您的测试用例对我有用。请在失败的地方发布完整的测试。另外,您使用的是什么版本的 groovy?
-
你们是对的。我在 Grails 应用程序中工作,我在服务类中执行此操作
switch。我在应用程序运行时添加了public static final声明,Grails 似乎相应地更新了这些类。我发现它不是(奇怪的是,仅在那些public static finalvars 上,因为其他代码更改正在发生)。我重新启动了我的应用程序,现在它可以工作了。
标签: string groovy switch-statement case