java1.7已经支持了匹配字符串
方案1.
1 enum Animal { 2 3 dog,cat,bear; 4 5 public static Animal getAnimal(String animal){ 6 7 return valueOf(animal ); 8 9 } 10 11 } 12 13 14 15 public class Client { 16 17 public void caseAnimal(String animal){ 18 19 switch(Animal.getAnimal(animal)){ 20 21 case cat: 22 23 System.out.println("this is a cat"); 24 25 break; 26 27 case dog: 28 29 System.out.println("this is a dog"); 30 31 break; 32 33 case bear: 34 35 System.out.println("this is a bear"); 36 37 break; 38 39 } 40 41 } 42 43 44 45 public static void main(String[] args) { 46 47 Client client = new Client(); 48 49 client.caseAnimal("cat"); 50 51 } 52 53 }
方案2
1 enum Seasons{ 2 3 SPRING,SUMMER,AUTUMN,WINTER 4 5 } 6 7 public class TestMultiInterface{ 8 9 public static void main(String[] args){ 10 11 Seasons str=Seasons.SPRING; 12 13 switch(str.ordinal()){ 14 15 case 0: 16 17 System.out.println(str.toString()); 18 19 break; 20 21 case 1: 22 23 System.out.println(str.toString()); 24 25 break; 26 27 default: 28 29 System.out.println("没找到"); 30 31 } 32 33 } 34 35 }
方案3
1 public void switchCase() { 2 3 Map<String,Integer> map=new HashMap<String, Integer>(); 4 5 map.put("中国", 1); 6 7 map.put("美国", 2); 8 9 map.put("英国", 3); 10 11 map.put("法国", 4); 12 13 14 15 String str="中国"; 16 17 switch(map.get(str)) 18 19 { 20 21 case 1: 22 23 System.out.println("中国"); 24 25 break; 26 27 case 2: 28 29 System.out.println("美国"); 30 31 break; 32 33 case 3: 34 35 System.out.println("英国"); 36 37 break; 38 39 case 4: 40 41 System.out.println("法国"); 42 43 break; 44 45 default: 46 47 System.out.println("default"); 48 49 } 50 51 }
方案4
1 String str1 = "aa"; 2 3 String[] str2 = {"bb", "aa", "cc", "aaa"}; 4 5 for (int i = 0; i < str2.length; ++i){ 6 7 switch (str1.compareTo(str2[i])) { 8 9 case 0: System.out.println("OK"); 10 11 break; 12 13 default: System.out.println("Error"); 14 15 break; 16 17 } 18 19 }
方案5
1 public class Client { 2 3 public Client(String animal) { 4 5 //使用String的hasCode取得字符串的哈希码,此方法要保证哈希码不重复 6 7 switch (animal.hashCode()) { 8 9 case 98262: 10 11 System.out.println("this is a cat"); 12 13 break; 14 15 case 99644: 16 17 System.out.println("this is a dog"); 18 19 break; 20 21 case 3019700: 22 23 System.out.println("this is a bear"); 24 25 break; 26 27 } 28 29 } 30 31 32 33 public static void main(String[] args) { 34 35 Client client = new Client("bear"); 36 37 }
方案6 如果是在使用简单工厂设计模式,可以考虑利用java反射技术代替switch
1 public static UserDao createUser(){ 2 Animal animal=null; 3 try { 4 iu=(Animal) Class.forName(Animal接口下子类的完整类名).newInstance(); 5 }catch (Exception e) { 6 e.printStackTrace(); 7 } 8 return animal; 9 10 }
以上方案,有的是从网上收集来的,有的是自己原创的,因为时间过长,已经不记得从哪个地方摘抄下来的,没有注明转载的地方,十分抱歉!