java根據輸入值例項化列舉類enum-switch
阿新 • • 發佈:2019-02-19
java5引入了列舉類這一新特性,最近開發用到了,主要是用來解決將大量判斷if-else語句轉換為switch-case語句,這樣程式從執行效率和可讀性都會得到很大提升。
關於列舉類,網上的資料都沒怎麼提到,如何根據一個動態的輸入值,來得到該列舉類的例項,這裡參考了一篇文章《java switch的使用+switch用String作為條件》
public enum Bank { ICBC("95588"),YNRCC("96500"), BOC("95566"), BOCM("95599"), UNKNOWN(""); // ICBC, YNRCC, BOC, BOCM; private String bank; private Bank(String str) { this.bank = str; } private String getBank() { return this.bank; } private void setBank(String b) { this.bank = b; } //覆蓋enum.toString()方法 public String toString() { return bank; } /** * * @功能 : TODO 將輸入值變成列舉常量值,注意該方法需要再外部呼叫,應定義為static * @param str * @return */ public static Bank getBank(String str) { System.out.println("str="+str); try { System.out.println("valueOf(str)="+valueOf(str)); return valueOf(str); }catch (Exception e) { System.out.println("...."); return UNKNOWN; } } }
下面開始測試這個列舉類
//例項化列舉類 public static void testIfSwitch1(String input) { Bank bankList = Bank.getBank(input); System.out.println("bankList="+bankList+",bankList.hashCode="+bankList.hashCode()); switch(bankList) { case YNRCC: { System.out.println("YNRCC bankList="+bankList); //自定義業務邏輯 }; break; case ICBC: { System.out.println("ICBC bankList="+bankList); //自定義業務邏輯 }; break; case BOC: { System.out.println("BOC bankList="+bankList); //自定義業務邏輯 }; break; case BOCM: { System.out.println("BOCM bankList="+bankList); //自定義業務邏輯 }; break; default: System.out.println("defalut bankList="+bankList);break; } }
呼叫
testIfSwitch1("BOC");
執行結果:
str=BOC
valueOf(str)=95566
bankList=95566,bankList.hashCode=7699183
BOC bankList=95566