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枚举类型的使用

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

java枚举的实际应用案例

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

关于枚举的创建和使用

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

Java enum 枚举还可以这么用

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

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

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

【原创】IntelliJ IDEA 自定义常用快捷键

1.前言           本人最近成功转型Intellij IDE(官网:https://www.jetbrains.com/idea/),之前一直使用eclipse。曾经三次尝试转型Inte...
  • lePdou
  • lePdou
  • 2014年12月18日 18:44
  • 6770

【MQ】Eclipse向RocketMQ中发送和接收消息

一、前言      在前几篇博客中简单的向大家介绍了一下搭建RocketMQ的环境,搭建的过程也是由套路可寻的。既然是mq,就避免不了消息的发送和接收。所以在这篇博客中小编就向大家介绍一下mq的发送和...

java 动态实例化内部类 可解析枚举

package com.util; import java.util.LinkedHashMap; import java.util.Map; /** * 功能:枚举使用工具 作者:Gary H...
  • hfmbook
  • hfmbook
  • 2014年10月20日 15:28
  • 2393

枚举enum和switch 的使用

  • 2013年12月30日 11:13
  • 14KB
  • 下载

Java中Enum类型的序列化及类升级不建议用枚举的原因

在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同。下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的。  Java代码:  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java根据输入值实例化枚举类enum-switch
举报原因:
原因补充:

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