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

浪尽此生 提交于 2019-12-11 04:46:13

问题


I was working on an android project using eclipse and suddenly i started to get this error:

Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted.

I tried every solution in previous similar issues but none of them worked for me...

I have Tried fixing the project and setting the JDK compliance level to 1.7 in both my project and for all project.

I am using ADT Build: v22.2.1-833290 and 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;
}

What's going on?


回答1:


You are trying to use switch / case with String objects, which is only available in Java 1.7 or higher. Android ADT requires Java 1.6. This means you cannot use switch with String construct. Just replace it with if / else.

Replace your code with this.

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"); 
}

Another option would be to create an enum and put all Protocol constants into there. Then you will be able to use switch / case with enum values.




回答2:


As the answer below gives more details, switch statement on String objects is a new feature introduced in Java 1.7. Unfortunatelly Android requires version 1.6 or 1.5. :

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



来源:https://stackoverflow.com/questions/21552106/android-project-using-eclipse-gives-error-cannot-switch-on-a-value-of-type-stri

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!