2010年9月13日 星期一

[Java] Enum and Switch case 的配合使用

為了讓 Switch case中增加閱讀性,可以在Switch case中配合 Enum使用,將常數定義在Enum中,因此在Switch Case中就能以Enum增加閱讀性了。

private enum My_ENUM {
    Taipei(0, "Taipei"), Tamsui(1, "Tamsui"), hsinchu(2, "hsinchu"), Taitung(3, "Taichu");

    private int id;
    private String name;

    My_ENUM(final int value, final String name) {
        this.id = value;
        this.name = name;
    }

    public int Getid() {
        return id;
    }

    public String toString() {
        return name;
    }

    public static My_ENUM ByName(final String str) {
        for (My_ENUM e : My_ENUM.values()) {
            if (e.name.equalsIgnoreCase(str)) {
                return e;
            }
        }
        return null;
    }

    public static My_ENUM ById(final int num) {
        for (My_ENUM e : My_ENUM.values()) {
            if (e.id == num) {
                return e;
            }
        }
        return null;
    }
}
My_ENUM select=My_ENUM.ById(0);
switch(select){
    case Taipei: //<==增加可讀性
        break;

    case Tamsui: //<==增加可讀性
        break;
 
    case Hsinchu://<==增加可讀性 
        break;

    case Taitung://<==增加可讀性
        break;
}
另外如果不想使用Enum,也利用 Static final方式也能達成

public class Constant
{
     public static final int ACTION_1 = 1;
     public static final int ACTION_2 = 2;
     public static final int ACTION_3 = 3;
}

int input=1;
switch(input)
{
    case Constant.ACTION_1: //<==增加可讀性
      System.out.println( "1" );
      break;

    case Constant.ACTION_2://<==增加可讀性
      System.out.println( "2" );
      break;

    case Constant.ACTION_3://<==增加可讀性
      System.out.println( "3" );
      break;
}

沒有留言:

張貼留言