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

原创 2014年04月07日 19:44:23

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枚举的实际应用案例

java枚举知识点来自jdk5.0的版本带来的新特性,下面讲解的内容分别是:  1.枚举类型    2.枚举中的参数、方法    3.遍历 在实际中对于一些基本固定的值用枚举比较好,当然...
  • fengchao2016
  • fengchao2016
  • 2016年10月08日 14:32
  • 2807

Java学习整理系列之Java枚举类型的使用

定义枚举类型其实就是在定义一个类,只不过很多细节由编译器帮你补齐了,所以,某种程度上enum关键词的作用就像是class或interface. 当使用enum定义枚举类型时,实际上所定义出来的类型是...
  • Sup_Heaven
  • Sup_Heaven
  • 2014年06月27日 19:47
  • 43840

Java enum 枚举还可以这么用

在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外。然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看。 1、可以在enu...
  • huang9012
  • huang9012
  • 2014年09月07日 00:57
  • 3198

Java 利用枚举实现单例模式

引言单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单...
  • yy254117440
  • yy254117440
  • 2016年08月24日 23:50
  • 18248

关于枚举的创建和使用

枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。举个例子,颜色也可以定义成枚举类型,它可以包含你定义的任何颜色,当需要的时候,只需要通过枚举调...
  • aeiou20018
  • aeiou20018
  • 2016年07月10日 16:31
  • 3331

java enum(枚举)使用详解 + 总结

JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。 接下来,我以自定义的枚举类LightsEnum.java和LightsEnumWithVal...
  • qiyueqinglian
  • qiyueqinglian
  • 2016年02月26日 14:41
  • 2322

Java学习系列(二十二)Java面向对象之枚举详解

今天我们来讲讲枚举,希望通过这篇博客大家能对枚举有个更全面的了解。枚举是一种实例(大写)数固定的类(不能再创建实例),枚举改变了常量的声明方式,而且它在编译期间就限定了类型。枚举多用于确定的状态数(如...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2015年04月28日 10:39
  • 1484

枚举类型特别实用的特性(在switch语句内使用)

枚举类型可以在switch语句内使用,如下代码:      1.枚举类        public enum Season { SPRING, SUMMER, FALL, WINTER }...
  • stevenhu_223
  • stevenhu_223
  • 2013年05月04日 23:59
  • 11013

java 枚举enum的使用(与在switch中的使用)

实际开发中,很多人可能很少用枚举类型。更多的可能使用常量的方式代替。但枚举比起常量来说,含义更清晰,更容易理解,结构上也更加紧密。看其他人的博文都很详细,长篇大论的,这里理论的东西不说了,一起看看在实...
  • KokJuis
  • KokJuis
  • 2017年06月09日 14:53
  • 5116

[java]Enum在switch中的比较判别

前面项目中使用了Enum枚举类型,每次在单个函数中判别枚举类型时都非常痛苦,以为无法switch判别枚举类型,而使用了很多的if判别。 估计和我早期使用方式错误有关系,一直以为在枚举type前面加上...
  • zhengdan66
  • zhengdan66
  • 2016年01月11日 00:13
  • 2215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java根据输入值实例化枚举类enum-switch
举报原因:
原因补充:

(最多只允许输入30个字)