使用String类型切换语句

时间:2015-02-24 11:08:55

标签: android

我正在尝试切换一个静态的字符串类型值。但是我无法弄清楚如何把它放到一个switch语句中我以前使用'if else'语句但由于我想要切换的项目数量不起作用。

对于if else我正在使用`

if (item.ActivityFeedType.equals("Comment"))

表示开关I;我试图使用

case (item.ActivityFeedType.equals("Comment")):

我有什么遗失的吗?

7 个答案:

答案 0 :(得分:18)

    对于字符串存在
  1. switch,但它仅从Java 7开始提供。语法实际上与Integer开关一样:

    String test = "test";
    switch (test) { 
        case "testt": 
            System.out.println("Wrong"); 
            break; 
        case "test": 
            System.out.println("Got it"); 
            break; 
    }
    
  2. 交换机无法处理,但一个简单的if-else无法处理。开关只是更方便。

  3. 我建议为Class'属性选择小写起始字母。

答案 1 :(得分:3)

如果您正在使用Java 1.7,那么 Java switch-case仅允许case中的常量变量。

答案 2 :(得分:1)

不可能将字符串切换到jdk 7以下。

您应该收到与以下内容类似的错误消息:

  

如果源级别低于1.7,则无法为String类型的值打开。   只允许使用可转换的int值或枚举变量

答案 3 :(得分:1)

java 6编译器不允许您将switch与引用类型(StringObject等一起使用)。您只能使用以下值类型执行此操作:byteshortcharint。如果您使用更高版本的JVM,则也可以switch超过String值。

现在回答你的问题。 android构建工具使用JVM 6,因此您无法使用新的switch能力。

答案 4 :(得分:1)

注意:在java 7下面,无法在switch中使用字符串。

如果您使用的是java 7或更高版本,则可以使用以下

String item="mango";

switch(item){
case "mango" :
      System.out.println("this is mango");
 break;
 ............
 ............
}

答案 5 :(得分:0)

如果您使用的是java版本7+

switch(item.ActivityFeedType){
case "Comment":
//do stuff
break;
}

答案 6 :(得分:0)

在构建gradle中添加Java 1.7

android {
    compileSdkVersion 23
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}