Bootstrap

Java 枚举类详解:从基础到实战


在 Java 编程中,枚举类是一种特殊类型的类,它用于定义一组固定的常量。枚举类在实际开发中非常有用,可以用来表示状态、选项等。本文将详细介绍 Java 枚举类的定义、使用方法以及一些高级特性。

一、定义枚举类

1. 基本语法

枚举类使用 enum 关键字定义,其基本语法如下:

enum 枚举名 {
    常量1, 常量2, ..., 常量N;
}

2. 示例

// 定义一个表示星期的枚举类
enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

二、使用枚举类

1. 访问枚举常量

可以通过枚举类名直接访问枚举常量。

Day day = Day.MONDAY;
System.out.println(day); // 输出:MONDAY

2. 遍历枚举常量

可以使用 values() 方法遍历所有的枚举常量。

for (Day day : Day.values()) {
    System.out.println(day);
}

3. 获取枚举常量的值

可以使用 ordinal() 方法获取枚举常量的序号,从 0 开始。

System.out.println(Day.MONDAY.ordinal()); // 输出:0

三、带有方法和字段的枚举类

枚举类可以包含方法和字段,这使得枚举类更加灵活。

1. 示例

enum TrafficLight {
    RED("Stop"), YELLOW("Caution"), GREEN("Go");

    private final String action;

    TrafficLight(String action) {
        this.action = action;
    }

    public String getAction() {
        return action;
    }
}

2. 使用示例

TrafficLight light = TrafficLight.RED;
System.out.println(light.getAction()); // 输出:Stop

四、重写枚举类的方法

可以重写枚举类的方法,例如 toString() 方法。

enum Planet {
    MERCURY("水星"), VENUS("金星"), EARTH("地球"), MARS("火星");

    private final String cnName;

    Planet(String cnName) {
        this.cnName = cnName;
    }

    @Override
    public String toString() {
        return cnName;
    }
}

2. 使用示例

Planet planet = Planet.EARTH;
System.out.println(planet.toString()); // 输出:地球

五、枚举类的高级特性

1. 实现接口

枚举类可以实现一个或多个接口。

interface Action {
    void perform();
}

enum ActionType implements Action {
    RUN("跑"), JUMP("跳");

    private final String description;

    ActionType(String description) {
        this.description = description;
    }

    @Override
    public void perform() {
        System.out.println(description);
    }
}

2. 使用示例

ActionType action = ActionType.RUN;
action.perform(); // 输出:跑

3. 使用 @Enum ordinal 注解

可以使用 @Enum ordinal 注解来指定枚举常量的序号。

enum Priority {
    @Enum ordinal(0)
    LOW("低"),
    @Enum ordinal(1)
    MEDIUM("中"),
    @Enum ordinal(2)
    HIGH("高");

    private final String description;

    Priority(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

4. 使用示例

Priority priority = Priority.LOW;
System.out.println(priority.getDescription()); // 输出:低

六、总结

枚举类是 Java 中一个非常有用的特性,它可以用来定义一组固定的常量。通过本文的介绍,我们学习了如何定义枚举类、使用枚举类以及枚举类的一些高级特性。希望这些内容能够帮助你在 Java 编程中更好地使用枚举类。

;