枚举类型ENUM的使用
2015-02-28 20:30
357 查看
JDK 5出现的新特性,新增的enum关键字用于定义枚举类。Java中声明的枚举类,均是继承自Enum。
为什么需要枚举?
Java的一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前的程序猿们都采用自定义带有枚举功能的类解决,Java5新特性出现后可以直接使用枚举予以解决。
枚举类具有以下特性:
① 枚举类是一种特殊形式的java类;
② 枚举类中声明的每一个枚举值代表枚举类的一个实例对象;
③ 与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但是构造函数必须是私有的。(为避免还可以使用该方法的构造函数创建其他对象);
④ 枚举类也可以实现接口或者继承抽象类;
⑤ JDK 5 中扩展的switch语句,它除了可以接受int、short、byte、char外,还可以接受一个枚举类型;
⑥ 若枚举类只有一个枚举值,则可以当作单态设计模式(内存始终只有一个该类的对象)使用;
自定义带有枚举功能的类示例代码(例如学生成绩五个等级):
一个枚举也可以有构造函数、字段和方法。例如每周都有7天,分别为MON、TUE、 WED、 THU、FRI、SAT、 SUN,我们在使用这种类型的数据时候,也可以使用枚举。示例代码:
带抽象方法的枚举示例代码:
由于枚举类继承自Enum,所以其继承Enum的所有方法,枚举类中的常用方法有:
name();返回次枚举常量的名称,在其枚举声明中对其进行声明;
ordinal();返回枚举常量的序数(它在枚举声明中的位置,其中初始常量为0);
valueof(class enumClass,String name);返回带指定名称的指定枚举类型的枚举常量;
values();用于遍历枚举的所有枚举值。
为什么需要枚举?
Java的一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前的程序猿们都采用自定义带有枚举功能的类解决,Java5新特性出现后可以直接使用枚举予以解决。
枚举类具有以下特性:
① 枚举类是一种特殊形式的java类;
② 枚举类中声明的每一个枚举值代表枚举类的一个实例对象;
③ 与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但是构造函数必须是私有的。(为避免还可以使用该方法的构造函数创建其他对象);
④ 枚举类也可以实现接口或者继承抽象类;
⑤ JDK 5 中扩展的switch语句,它除了可以接受int、short、byte、char外,还可以接受一个枚举类型;
⑥ 若枚举类只有一个枚举值,则可以当作单态设计模式(内存始终只有一个该类的对象)使用;
自定义带有枚举功能的类示例代码(例如学生成绩五个等级):
class Grade{ private Grade(){} //Grade方法的构造函数,私有是为了限制数据不能是任意的 public static final Grade A=new Grade(); public static final Grade B=new Grade(); public static final Grade C=new Grade(); public static final Grade D=new Grade(); public static final Grade E=new Grade(); }
一个枚举也可以有构造函数、字段和方法。例如每周都有7天,分别为MON、TUE、 WED、 THU、FRI、SAT、 SUN,我们在使用这种类型的数据时候,也可以使用枚举。示例代码:
enum WeekDay { A("MON"), B("TUE"), C("WED"), D("THU"), E("FRI"), F("SAT"), G("SUN"); private String value;<span style="white-space:pre"> </span>//封装每个对象对应的字段 private WeekDay(String wd) { this.value = wd; } public String getValue() { return this.value; } }特别注意的是:定义枚举类的时候构造函数必须要私有。
带抽象方法的枚举示例代码:
enum WeekDay { A("MON") { public String localValue() { return "周一"; } }, B("TUE") { public String localValue() { return "周二"; } }, C("WED") { public String localValue() { return "周三"; } }, D("THU") { public String localValue() { return "周四"; } }, E("FRI") { public String localValue() { return "周五"; } }, F("SAT") { public String localValue() { return "周六"; } }, G("SUN") { public String localValue() { return "周日"; } }; private String value; private WeekDay(String value) { this.value = value; } public String getValue() { return this.value; } public abstract String localValue(); }注意:在定义枚举时,定义了抽象方法时,需要在创建每个枚举对象时候实现该抽象方法;
由于枚举类继承自Enum,所以其继承Enum的所有方法,枚举类中的常用方法有:
name();返回次枚举常量的名称,在其枚举声明中对其进行声明;
ordinal();返回枚举常量的序数(它在枚举声明中的位置,其中初始常量为0);
valueof(class enumClass,String name);返回带指定名称的指定枚举类型的枚举常量;
values();用于遍历枚举的所有枚举值。
相关文章推荐
- C# 中的 enum(枚举) 类型使用例子
- C++11新特性(三)Strongly-typed enums 强类型枚举简单使用
- java枚举类型enum的使用
- string类型转为对应的枚举类型,使用Enum.Parse
- 使用enum枚举数据类型实现多线程中的单例模式
- 全面解读Java中的枚举类型enum的使用
- Java中的枚举类型enum的使用
- 6. C# -- 枚举类型,typeof(),Enum.Parse()使用
- 高阶Java枚举类型enum使用详解
- enum枚举类型使用
- JAVA:初始化及使用enum枚举类型
- java中的枚举类型enum的使用
- 《小平工作日志》Java 中 Enum 枚举类型使用大全
- 枚举Java 语言中 Enum 类型的使用介绍
- enum枚举类型使用
- 高阶Java枚举类型enum使用详解
- net core 使用tagHelper将 enum枚举类型转换为下拉列表select
- 单例模式之使用enum枚举数据类型实现
- 全面解读Java中的枚举类型enum的使用
- 高阶Java枚举类型enum使用详解