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 SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...
枚举实例化是在类加载时自动完成的,因此避免了多线程环境下的同步问题。 ```java public enum Singleton { INSTANCE; public void doSomething() { // ... } } Singleton singleton = Singleton.INSTANCE; ...
3. **枚举的实例化**:枚举的实例是唯一的,不能通过构造函数创建新的实例,只能通过枚举名称来访问,如`Color color = Color.RED;`。 4. **枚举集合操作**:可以使用`values()`方法获取枚举类型的全部实例,如`...
Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...
枚举类中的构造器必须声明为`private`,这是为了确保枚举实例只能在枚举类的定义内部被创建,防止外部随意实例化。 2. 不可继承: 由于枚举类的特殊性,它们不能被其他类继承,这保证了枚举实例的唯一性和不可...
枚举类可以有构造函数,用于初始化枚举实例。例如: ```java public enum WeekDay { Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"), Sun("Sunday"); ...
枚举构造函数主要用于初始化枚举实例的内部状态,但需要注意,构造函数不能被外部直接调用,只能在枚举实例的定义中使用。例如: ```java public enum Color { RED(1), GREEN(2), BLUE(3); private int value; ...
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
但是,可以通过私有构造器初始化枚举实例: ```java enum Color { RED("Red"), GREEN("Green"), BLUE("Blue"); private String displayName; private Color(String displayName) { this.displayName = ...
枚举常量可以直接通过其名称访问,无需实例化枚举类。如需获取枚举的所有常量,可以使用`values()`方法: ```java for (WeekDay day : WeekDay.values()) { System.out.println(day); } ``` 3. **枚举的构造...
在Java、C#等面向对象的语言中,枚举(Enum)是语言内置的一部分,而在其他如C++中,可以通过类或者宏来实现类似的功能。 标题“对enum简单的封装”可能是指博主通过自定义的方式来增强枚举类型的使用,使其更加...
枚举类的实例默认继承自java.lang.Enum类,并且不能被实例化,除非在枚举声明中明确创建。 枚举类的每个实例都可以有自己的方法和属性。例如,为上述颜色枚举添加一个描述: ```java public enum Color { RED(...
此外,枚举类型不能被实例化,除非通过`values()`或`valueOf()`方法,这增加了代码的可控性。 在Java中,枚举还可以用于switch语句,提供了一种更安全的替代传统的if...else if...else结构。例如: ```java ...
虽然枚举值是在声明时自动创建的,但可以在枚举类中定义私有构造函数来初始化它们。这些构造函数在枚举实例创建时自动调用。例如: ```java public enum Planet { MERCURY(3.303e+23, 2.4397e6), VENUS(4.869e+...
- 实例化对象,包括通过无参构造函数(`newInstance()`)或有参构造函数(通过`Constructor`类)。 - 访问和修改类的属性(通过`Field`类)。 - 调用类的方法(通过`Method`类)。 `Method`类可以用来调用类中的...
Java中的枚举(enum)类型是一种特殊的类,它在编程中用于表示一组固定数量的常量。枚举在Java中引入于JDK 5,它不仅提供了一种更安全、更面向对象的方式来处理这些常量,而且还具备了丰富的功能。在本文中,我们将...
在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义固定的常量集合。它在许多场景下比常量接口或静态final变量更安全、更方便。本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java...
Java中的枚举(enum)是自...总结来说,Java枚举提供了一种结构化、类型安全的方式来定义和使用常量,还支持方法定义、接口实现以及与`switch`语句的无缝集成。这些特性使得枚举成为编写可维护、可扩展代码的重要工具。
在Java编程语言中,枚举(Enumeration)是一种特殊的类,用于定义固定的、有限数量的值。在面试中,对枚举的理解和应用是衡量开发者专业技能的重要标准之一。本篇文章将深入探讨Java枚举的使用及其背后的原理。 一...
1. 构造器默认为私有,这意味着你不能通过`new Animals()`的方式来实例化枚举。 2. 枚举值是预定义的,不能在运行时动态添加新的枚举实例。 3. 枚举可以包含方法,就像普通类一样。在示例中,`Animals`枚举有一个`...