java根据输入值实例化枚举类enum-switch

本文介绍了Java枚举类的使用,尤其是如何根据动态输入值实例化枚举类,以替代繁琐的if-else语句,提高代码执行效率和可读性。通过一个具体的例子展示了如何使用switch-case与枚举类结合,实现特定枚举值的查找与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值