Java枚举类型
内容简介
- 枚举类型
枚举类型
在Java中,被 enum
关键字修饰的类型就是枚举类型,enum
的全称为 enumeration
,它是 JDK 1.5 中引入的新特性。所有的枚举类型都是继承自 Enum
类型。
其具有集合的一些特点,用以存放有限个特定名称的元素。例如,分别使用元素 EAST
、SOUTH
、WEST
和 NORTH
表示方位。
它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,因此这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。
使用关键字 enum
定义作为引用类型且包含约束的枚举类型,隐式地作为抽象类java.lang.Enum
的子类。枚举类型包含若干枚举值,枚举变量赋值只能取枚举值。通常定义枚举类型时,还可以添加构造方法或其它方法。
枚举一般用于以下情况:定义常量、添加新方法、与switch结合使用、实现接口、使用接口组织枚举。
每个枚举类型均可使用静态方法 values()
获得相应的枚举数组。
注意
枚举类型的构造方法默认是 private
,不可使用 public
等修饰符。
实验要求
(1)新建类 EnumDemo
,并创建 main()
方法体。
(2)在类 EnumDemo
的上方,使用关键字 enum
定义一个反映一周七天的枚举类型Week
,其枚举值分别为 Sun
、Mon
、Tue
、Wed
、Thu
、Fri
和 Sat
。
(3)在 main()
方法体内,编写遍历枚举的代码并测试。
(4)分别给枚举值设定描述值,如 Sun(0)
、Mon(1)
等。相应地,增加字段 int index
和构造方法 Week(int index){this.index=index;}
(5)编写根据枚举获取描述值的公有方法 public int getIndex(){return index;}
(6)在 main()
里,编写输出Wed对应描述值的代码并测试。
代码参考
1. 新建类 EnumDemo
,并创建 main()
方法体。
// 新建类EnumDemo,并创建main()方法体。
public class EnumDemo {
public static void main(String[] args) {
}
}
2. 在类 EnumDemo
的上方,使用关键字 enum
定义一个反映一周七天的枚举类型Week
,其枚举值分别为 Sun
、Mon
、Tue
、Wed
、Thu
、Fri
和 Sat
// 在类EnumDemo的上方,使用关键字enum定义一个反映一周七天的枚举类型Week
enum Week {
// 分别给枚举值设定描述值,如Sun(0)、Mon(1)等。
Sun, Mon, Tue, Wed, Thu, Fri, Sat;
}
3. 在 main()
方法体内,编写遍历枚举的代码并测试。
public static void main(String[] args) {
// 在main()方法体内,编写遍历枚举的代码并测试。
// 增强 for 循环
for(Week day:Week.values())
{
System.out.println(day);
}
}
测试结果
4. 分别给枚举值设定描述值,如 Sun(0)
、Mon(1)
等。相应地,增加字段 int index
和构造方法 Week(int index){this.index=index;}
// 在类EnumDemo的上方,使用关键字enum定义一个反映一周七天的枚举类型Week
enum Week {
// 分别给枚举值设定描述值,如Sun(0)、Mon(1)等。
Sun(0), Mon(1), Tue(2), Wed(3), Thu(4), Fri(5), Sat(6);
// 定义枚举描述字段
int index;
// 构造方法,用于实例化枚举描述字段
Week(int index) {
this.index = index;
}
}
5. 编写根据枚举获取描述值的公有方法 public int getIndex(){return index;}
// 编写根据枚举获取描述值的公有方法
public int getIndex() {
return index;
}
6. 在 main()
里,编写输出Wed对应描述值的代码并测试。
// 新建类EnumDemo,并创建main()方法体。
public class EnumDemo {
public static void main(String[] args) {
// 在main()方法体内,编写遍历枚举的代码并测试。
// 增强 for 循环
for (Week day : Week.values()) {
// 在main()里,编写输出Wed对应描述值的代码并测试。
System.out.println(day + "(" + day.getIndex() + ")");
}
}
}
测试结果
完整代码
package unit02;
// (1)新建类EnumDemo,并创建main()方法体。
// (2)在类EnumDemo的上方,使用关键字enum定义一个反映一周七天的枚举类型Week,其枚举值分别为Sun、Mon、Tue、Wed、Thu、Fri和Sat。
// (3)在main()方法体内,编写遍历枚举的代码并测试。
// (4)分别给枚举值设定描述值,如Sun(0)、Mon(1)等。相应地,增加字段int index和构造方法 Week(int index){this.index=index;}
// (5)编写根据枚举获取描述值的公有方法 public int getIndex(){return index;}
// (6)在main()里,编写输出Wed对应描述值的代码并测试。
// 在类EnumDemo的上方,使用关键字enum定义一个反映一周七天的枚举类型Week
enum Week {
// 分别给枚举值设定描述值,如Sun(0)、Mon(1)等。
Sun(0), Mon(1), Tue(2), Wed(3), Thu(4), Fri(5), Sat(6);
// 定义枚举描述字段
int index;
// 构造方法,用于实例化枚举描述字段
Week(int index) {
this.index = index;
}
// 编写根据枚举获取描述值的公有方法
public int getIndex() {
return index;
}
}
// 新建类EnumDemo,并创建main()方法体。
public class EnumDemo {
public static void main(String[] args) {
// 在main()方法体内,编写遍历枚举的代码并测试。
// 增强 for 循环
for (Week day : Week.values()) {
// 在main()里,编写输出Wed对应描述值的代码并测试。
System.out.println(day + "(" + day.getIndex() + ")");
}
}
}
参考书目:吴志祥《JAVA编程技术》