我还没有在 Groovy 中使用太多枚举,但是下面的代码并不像我期望的那样运行:
enum Enum{ A, B }
def e = Enum.A
switch(e) {
case Enum.A:
println("A: ${Enum.A.isCase(e)}")
case Enum.B:
println("B: ${Enum.B.isCase(e)}")
}
这打印
A: true
B: false
我是在误用 enum 还是为什么在 switch 语句中执行了 Enum.B case?
您需要在最后的每个
break
部分语句中使用case
语句。这是为了确保在执行相关语句集后立即退出循环。查看更多在这里
所以你的 switch 语句应该是这样的:
switch(e) {
case Enum.A:
println("A: ${Enum.A.isCase(e)}")
break
case Enum.B:
println("B: ${Enum.B.isCase(e)}")
break // optional
}