在java中明确规定switch里面只允许使用int,char,和enum类型,但是我们实际编程过程中往往需要通过String来进行比较。那么应该怎么做呢?其实很简单,我们只需要将enum类型做一个小小的封装就可以达到我们的目的。
public enum Animal {
dog, cat, bear;
public static Animal getAnimal(String animal) {
return valueOf(animal.toLowerCase());
}
}
调用:
public class Client {
public void caseAnimal(String animal){
switch(Animal.getAnimal(animal)){
case cat:
System.out.println("this is a cat");
break;
case dog:
System.out.println("this is a dog");
break;
case bear:
System.out.println("this is a bear");
break;
}
}
/**
* @param args
*/
public static void main(String[] args) {
Client client = new Client();
client.caseAnimal("cat");
}
}
在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。
在Java7中,呼吁很久的String支持也终于被加上了。
下面是一段switch中使用String的示例代码。
public class Test {
public void test(String str) {
switch(str) {
case "abc":
System.out.println("abc");
break;
case "def":
System.out.println("def");
break;
default:
System.out.println("default");
}
}
}
需要注意的是,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null。