java根据输入值实例化枚举类enum-switch
程序员文章站
2022-07-10 10:47:14
...
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
下一篇: java中类的加载与实例化顺序