Java Android中以字符串作为参数的Switch语句
我想使用Java1.7中的switch语句,它还允许Java Android中以字符串作为参数的Switch语句,java,android,switch-statement,Java,Android,Switch Statement,我想使用Java1.7中的switch语句,它还允许switch(someString)。但是,如果我将java编译器更改为1.7,项目将中断,我必须返回1.5或使用android工具->修复项目 在android开发中有没有办法使用带字符串的switch?编辑 就我个人而言,我还没有尝试过,但根据页面,它是不受支持的。这就是说,这并不意味着它不起作用,只是你不太可能从谷歌/安卓系统在这个问题上得到太多/任何帮助 JDK 5或JDK 6(仅JRE是不够的) 在一个潜在的积极方面,(在@Emil
switch(someString)
。但是,如果我将java编译器更改为1.7,项目将中断,我必须返回1.5或使用android工具->修复项目
在android开发中有没有办法使用带字符串的switch?编辑
就我个人而言,我还没有尝试过,但根据页面,它是不受支持的。这就是说,这并不意味着它不起作用,只是你不太可能从谷歌/安卓系统在这个问题上得到太多/任何帮助
JDK 5或JDK 6(仅JRE是不够的)
在一个潜在的积极方面,(在@Emil H和他的评论的帮助下)我在网上找到了以下信息:
发件人:
程序通常用Java方言编写并编译成字节码。然后将它们从与Java虚拟机兼容的.class文件转换为与Dalvik兼容的.dex(Dalvik可执行文件)文件
如果字节码没有从版本6更改为版本7(不包括@David Schwartz提到的添加的invokedynamic
,该switch
语句不应该使用),那么它应该可以工作…您应该能够在android上使用JDK7。检查以下相关问题的答案:
编辑:
在本地试用过,JDK7一切正常(这是我在开发时使用的)。然而,在我的android项目中,我找不到一种方法将合规性级别从1.6更改为1.7。如果您真的想这样做,我想您必须求助于使用Eclipse以外的其他方法来构建您的项目。例如,使用ant脚本或类似脚本。可能会比它的价值多一点。目前不可能:
尽管在Java 1.7编译器中引入了带字符串的switch语句,但不幸的是,Android需要1.6或1.5版本。
因此,我们必须等待。@Deepak它在Java7中,因此是这个问题的原因。此链接()中提供的答案向您展示了如何在Java7之前解决字符串限制的切换问题。如果您不想使用此方法,则必须使用If/elses。的可能重复项您确定这一点吗。我认为dex编译器可以处理字节码。据我所知,java 7没有在字节码级别添加任何新内容。。。我可能错了,你…@emilhjava7至少在每个字节的Java字节码中添加了invokedynamic
。@davidscwartz是的,但是Java没有正确使用它?这主要是为了增加对jvm上动态语言的支持,如Jython等,这是很好的一点。我已经更新了我的答案以反映这一信息。