Java枚举类型详解 - 从基础到进阶

需积分: 9 1 下载量 19 浏览量 更新于2024-08-23 收藏 281KB PPT 举报
"快乐学习学习快乐!-第十三章枚举" 在Java编程语言中,枚举(enum)是一种特殊的类,用于定义一组固定的常量。枚举类型在面向对象编程中非常有用,尤其是在处理有限数量的预定义状态或选项时。在本章中,我们将深入探讨如何定义和使用枚举,以及它们在集合中的应用。 首先,让我们来看看如何定义一个枚举。自JDK 1.5起,Java引入了`enum`关键字,允许我们创建枚举类型。下面是一个简单的例子: ```java public enum WeekTest { MON, TUE; } ``` 在这个例子中,`WeekTest`是一个枚举类,包含两个枚举常量:`MON`和`TUE`,分别代表星期一和星期二。 要访问枚举的成员,可以直接通过枚举名和点号`.`来获取。例如,我们可以这样获取并打印枚举常量: ```java public class Test { public static void main(String[] args) { WeekTest t = WeekTest.MON; System.out.println(t); // 输出 "MON" } } ``` 枚举还提供了几个内置的方法,如`values()`,它可以返回枚举类型的全部枚举常量数组。通过遍历这个数组,我们可以获取并打印所有枚举值及其顺序: ```java for (WeekTest week : WeekTest.values()) { System.out.println(week.ordinal() + "-->" + week.name()); } ``` 这里的`ordinal()`方法返回枚举常量的顺序,通常从0开始。`name()`方法则返回枚举常量的名称。 枚举还可以扩展其他功能。例如,我们可以覆盖`toString()`方法,使每个枚举常量具有更具体的表示形式: ```java public class WeekDemo { @Override public String toString() { return name; } public static final WeekDemo MON = new WeekDemo("MON"); public static final WeekDemo TUE = new WeekDemo("TUE"); public static final WeekDemo WED = new WeekDemo("WED"); public static final WeekDemo THU = new WeekDemo("THU"); // ... } ``` 虽然上述代码中使用了`new WeekDemo()`来创建枚举实例,但这种方式并不常见,因为通常枚举是通过`enum`关键字直接定义的,而不是通过构造函数。然而,这里展示了如何自定义枚举的属性和行为。 枚举在集合中的使用也很常见。由于枚举的不可变性,它们可以安全地用作集合的元素,而不用担心集合中的数据被意外修改。例如,我们可以创建一个包含所有星期的列表: ```java List<WeekTest> daysOfWeek = Arrays.asList(WeekTest.values()); ``` 枚举提供了一种安全且易于使用的机制,用于定义一组预定义的、不可变的常量,它在Java编程中扮演着重要的角色,尤其是在处理固定数量的选项或状态时。枚举不仅可以定义常量,还可以包含方法和实现接口,使得它们的功能更为强大。