"快乐学习学习快乐!-第十三章枚举"
在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编程中扮演着重要的角色,尤其是在处理固定数量的选项或状态时。枚举不仅可以定义常量,还可以包含方法和实现接口,使得它们的功能更为强大。