我知道在
Java中,当你遇到很少的情况时,不应该使用switch语句,在这种情况下,最好使用if else if.
对于groovy来说也是如此吗?
myBeans.each{ switch it.name case 'aValue': //some operation case 'anotherValue: //other operations }
要么:
myBeans.each{ if(it.name == 'aValue'){ //some operation } else if (it.name =='anotherValue){ //other operations } }
解决方法
在Java中,“switch”比串行if块更有效,因为编译器生成一条
tableswitch指令,其中目标可以从跳转表中确定.
在Groovy中,switch不限于整数值,并且具有许多额外的语义,因此编译器不能使用该工具.编译器生成一系列比较,就像它对serial if块一样.
但是,每次比较都会调用ScriptBytecodeAdapter.isCase(switchValue,caseExpression).这始终是对caseExpression对象上的isCase方法的动态方法调用.该调用可能比ScriptBytecodeAdapter.compareEqual(左,右)更昂贵,后者被称为if比较.
因此在Groovy中,如果是块,则交换机通常比串行更昂贵.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。