我是在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;
}
这是怎么回事?
您正在尝试使用switch
/ case
与String
对象,这是只在Java 1.7或更高版本中提供。 Android的ADT需要Java 1.6。 这意味着你不能使用switch
与String
结构。 只是取代它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
/ case
与enum
值。
正如下面的答案提供了更多的细节,对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