使用Eclipse Android项目给出了错误:无法String类型的值转换为低于1.7源代码级别

2019-10-19 06:51发布

我是在Android项目的工作使用Eclipse和突然我开始收到此错误:

不能在低于1.7源电平的String类型的值进行切换。 只允许兑换int类型或枚举变量。

我试图在以前的类似问题每一个解决方案,但没有他们的工作对我来说...

我曾尝试固定项目,并在我的两个项目,所有项目的JDK遵从级别设置为1.7。

我使用ADT生成:v22.2.1-833290和Eclipse:

String text = mService.getString();
switch (text) {
    case Protocols.REQUEST_SEND_MESSAGE:
        publishProgress("sent");
        break;
    case Protocols.RESPONSE_OK:
        mService.sendMessage("mesasage");   
        publishProgress("sent");  
        break;              
    default:
        break;
}

这是怎么回事?

Answer 1:

您正在尝试使用switch / caseString对象,这是只在Java 1.7或更高版本中提供。 Android的ADT需要Java 1.6。 这意味着你不能使用switchString结构。 只是取代它if / else

与此更换你的代码。

String text=mService.getString();
if (Protocols.REQUEST_SEND_MESSAGE.equals(text)) {
    publishProgress("sent");
} else if (Protocols.RESPONSE_OK.equals(text)) {
    mService.sendMessage("mesasage");
    publishProgress("sent"); 
}

另一种选择是创建一个enum ,并把所有协议常量到那里。 然后,你将能够使用switch / caseenum值。



Answer 2:

正如下面的答案提供了更多的细节,对String对象switch语句是Java 1.7引入的新功能。 可惜的是Android的需要1.6版或1.5。 :

https://stackoverflow.com/a/14367642/1572408



文章来源: Android project using Eclipse gives error: Cannot switch on a value of type String for source level below 1.7