Groovy 2.1.0带有@CompileStatic的switch-case-break语句的奇怪
发布时间:2020-12-14 16:21:59 所属栏目:大数据 来源:网络整理
导读:我是新手groovy程序员,我遇到了使用静态编译(@CompileStaticannotation)的switch-case-break语句的奇怪行为.似乎忽略了休息. 这是一个错误还是我在阅读文档时遗漏了一些东西. 环境: - groovy sdk 2.1.0 - Oracle JDK build 1.7.0_13-b20 on Mac OS X Lion 1
我是新手groovy程序员,我遇到了使用静态编译(@CompileStaticannotation)的switch-case-break语句的奇怪行为.似乎忽略了休息.
这是一个错误还是我在阅读文档时遗漏了一些东西. 环境: - groovy sdk 2.1.0 - Oracle JDK build 1.7.0_13-b20 on Mac OS X Lion 10.7.5 测试用例: import groovy.transform.CompileStatic @CompileStatic class Test { def test() { ['A','B','C'].each { String val -> switch (val) { case 'A' : println("${val} caseA") break case 'B' : println("${val} caseB") break default : println("${val} default") } } } } (new Test()).test() 输出: A caseA A caseB A default B caseB B default C default 第二个测试:只需评论@CompileStatic 而且,任何工作都很好: A caseA B caseB C default 解决方法
这似乎是Groovy 2.1.0中的一个错误(感谢将其发布到JIRA,看起来它将在Groovy 2.1.1中修复)
作为一种解决方法,在此版本发布之前,您可以使用带标记的块来为case语句中断 switch (val) { case 'A' : A:{ println("${val} caseA") break } case 'B' : B:{ println("${val} caseB") break } default : println("${val} default") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |