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)) {
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 }
以上方案,有的是从网上收集来的,有的是自己原创的,因为时间过长,已经不记得从哪个地方摘抄下来的,没有注明转载的地方,十分抱歉! |