欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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