`
H4X0R
  • 浏览: 12387 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多

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

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    高阶Java-Java枚举类型 enum 应用详解

    枚举实例化是在类加载时自动完成的,因此避免了多线程环境下的同步问题。 ```java public enum Singleton { INSTANCE; public void doSomething() { // ... } } Singleton singleton = Singleton.INSTANCE; ...

    Java 实例 - enum 和 switch 语句使用源代码-详细教程.zip

    3. **枚举的实例化**:枚举的实例是唯一的,不能通过构造函数创建新的实例,只能通过枚举名称来访问,如`Color color = Color.RED;`。 4. **枚举集合操作**:可以使用`values()`方法获取枚举类型的全部实例,如`...

    java 枚举(enum) 详解(学习资料)

    Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...

    Java枚举类enum介绍

    枚举类中的构造器必须声明为`private`,这是为了确保枚举实例只能在枚举类的定义内部被创建,防止外部随意实例化。 2. 不可继承: 由于枚举类的特殊性,它们不能被其他类继承,这保证了枚举实例的唯一性和不可...

    java中enum枚举的详细用法

    枚举类可以有构造函数,用于初始化枚举实例。例如: ```java public enum WeekDay { Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"), Sun("Sunday"); ...

    Java 实例 - Enum(枚举)构造函数及方法的使用源代码-详细教程.zip

    枚举构造函数主要用于初始化枚举实例的内部状态,但需要注意,构造函数不能被外部直接调用,只能在枚举实例的定义中使用。例如: ```java public enum Color { RED(1), GREEN(2), BLUE(3); private int value; ...

    简单总结java枚举类型

    Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...

    java枚举类用法

    但是,可以通过私有构造器初始化枚举实例: ```java enum Color { RED("Red"), GREEN("Green"), BLUE("Blue"); private String displayName; private Color(String displayName) { this.displayName = ...

    enum枚举类的一些代码demo

    枚举常量可以直接通过其名称访问,无需实例化枚举类。如需获取枚举的所有常量,可以使用`values()`方法: ```java for (WeekDay day : WeekDay.values()) { System.out.println(day); } ``` 3. **枚举的构造...

    对enum简单的封装

    在Java、C#等面向对象的语言中,枚举(Enum)是语言内置的一部分,而在其他如C++中,可以通过类或者宏来实现类似的功能。 标题“对enum简单的封装”可能是指博主通过自定义的方式来增强枚举类型的使用,使其更加...

    498.496.JAVA基础教程_枚举类与注解-枚举类的理解(498).rar

    枚举类的实例默认继承自java.lang.Enum类,并且不能被实例化,除非在枚举声明中明确创建。 枚举类的每个实例都可以有自己的方法和属性。例如,为上述颜色枚举添加一个描述: ```java public enum Color { RED(...

    java枚举的一个实例

    此外,枚举类型不能被实例化,除非通过`values()`或`valueOf()`方法,这增加了代码的可控性。 在Java中,枚举还可以用于switch语句,提供了一种更安全的替代传统的if...else if...else结构。例如: ```java ...

    Java高新技术_java5的枚举的基本应用

    虽然枚举值是在声明时自动创建的,但可以在枚举类中定义私有构造函数来初始化它们。这些构造函数在枚举实例创建时自动调用。例如: ```java public enum Planet { MERCURY(3.303e+23, 2.4397e6), VENUS(4.869e+...

    Java期末复习——枚举与反射机制

    - 实例化对象,包括通过无参构造函数(`newInstance()`)或有参构造函数(通过`Constructor`类)。 - 访问和修改类的属性(通过`Field`类)。 - 调用类的方法(通过`Method`类)。 `Method`类可以用来调用类中的...

    深入谈谈java的枚举(enum)类型

    Java中的枚举(enum)类型是一种特殊的类,它在编程中用于表示一组固定数量的常量。枚举在Java中引入于JDK 5,它不仅提供了一种更安全、更面向对象的方式来处理这些常量,而且还具备了丰富的功能。在本文中,我们将...

    Java Enum使用Demo源码

    在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义固定的常量集合。它在许多场景下比常量接口或静态final变量更安全、更方便。本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java...

    Java枚举(enum) 详解7种常见的用法

    Java中的枚举(enum)是自...总结来说,Java枚举提供了一种结构化、类型安全的方式来定义和使用常量,还支持方法定义、接口实现以及与`switch`语句的无缝集成。这些特性使得枚举成为编写可维护、可扩展代码的重要工具。

    Java面试枚举从使用到原理

    在Java编程语言中,枚举(Enumeration)是一种特殊的类,用于定义固定的、有限数量的值。在面试中,对枚举的理解和应用是衡量开发者专业技能的重要标准之一。本篇文章将深入探讨Java枚举的使用及其背后的原理。 一...

    java 枚举学习心得

    1. 构造器默认为私有,这意味着你不能通过`new Animals()`的方式来实例化枚举。 2. 枚举值是预定义的,不能在运行时动态添加新的枚举实例。 3. 枚举可以包含方法,就像普通类一样。在示例中,`Animals`枚举有一个`...

Global site tag (gtag.js) - Google Analytics