我正在尝试切换一个静态的字符串类型值。但是我无法弄清楚如何把它放到一个switch语句中我以前使用'if else'语句但由于我想要切换的项目数量不起作用。
对于if else我正在使用`
if (item.ActivityFeedType.equals("Comment"))
表示开关I;我试图使用
case (item.ActivityFeedType.equals("Comment")):
我有什么遗失的吗?
答案 0 :(得分:18)
switch
,但它仅从Java 7开始提供。语法实际上与Integer
开关一样:
String test = "test";
switch (test) {
case "testt":
System.out.println("Wrong");
break;
case "test":
System.out.println("Got it");
break;
}
交换机无法处理,但一个简单的if-else无法处理。开关只是更方便。
我建议为Class'属性选择小写起始字母。
答案 1 :(得分:3)
如果您正在使用Java 1.7,那么
Java switch-case
仅允许case
中的常量变量。
答案 2 :(得分:1)
不可能将字符串切换到jdk 7以下。
您应该收到与以下内容类似的错误消息:
如果源级别低于1.7,则无法为String类型的值打开。 只允许使用可转换的int值或枚举变量
答案 3 :(得分:1)
java 6编译器不允许您将switch
与引用类型(String
,Object
等一起使用)。您只能使用以下值类型执行此操作:byte
,short
,char
和int
。如果您使用更高版本的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
}
}