我想知道你是否可以使用' contains()'等方法。在开关盒的情况下。我试图将以下if语句转换为switch case:
String sentence;
if(sentence.contains("abcd")){
// do command a
}
else if(sentence.contains("efgh")){
// do command b
}
else if(sentence.contains("ijkl")){
// do command c
}
else{
//do command d
}
非常感谢你的帮助。
答案 0 :(得分:1)
实际上你可以改变这个,如果进入开关,但它有点不可读:
()
答案 1 :(得分:0)
不,因为case
常量必须是:
switch
表达式相同类型的枚举器名称。方法调用既不是这些。
来自Java Language Specification, section 14.11: The switch statement:
每个
case
标签都有一个case
常量,它是常量表达式或枚举常量的名称。
答案 2 :(得分:0)
是的,假设您使用的是JDK 7或更高版本,则可以使用switch语句获得相同的代码。 JDK 7 introduced the ability to allow String objects as the expression in a switch statement。与调用 equals 方法的if-then-else语句链相比,这通常会产生更高效的字节码。
String pattern;
String sentence;
if (sentence.contains(pattern))
{
switch (pattern)
{
case "abcd":
// do command a
break;
case "efgh":
// do command b
break;
case "ijkl":
// do command c
break;
default:
// do command d
break;
}
}
请注意,这仅适用,因为包含方法需要 String 对象,而 String 对象现在在switch语句中有效。你不能概括它来处理任意类型的对象。
答案 3 :(得分:-1)