Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中以字符串作为参数的Switch语句_Java_Android_Switch Statement - Fatal编程技术网

Java Android中以字符串作为参数的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

我想使用Java1.7中的switch语句,它还允许
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等,这是很好的一点。我已经更新了我的答案以反映这一信息。