Java枚举攻略:深入理解与应用实践详解

admin|
2

Java 枚举(Enum)是一种类型,它用于声明一组固定的常量。枚举在 Java 中是一种特殊的类,它有自己的一些特性。枚举可以包含多个预定义的值,这些值称为枚举常量。枚举类型可以看作是一种类型安全的数据结构,用于表示一组具有明确意义的值。

枚举的特性:

  1. 枚举类默认继承 java.lang.Enum 类。
  2. 枚举类不能被继承,但可以实现接口。
  3. 枚举类中所有的方法默认都是 public 的。
  4. 枚举类中可以定义自己的方法和属性。
  5. 枚举类可以使用 switch 语句。
  6. 枚举类可以有自己的构造函数。

创建枚举类:

创建枚举类的基本语法如下:

public enum EnumName {
    // 枚举常量
    VALUE1, VALUE2, VALUE3, ...
    
    // 构造函数
    EnumName() {
        // 构造函数逻辑
    }
    
    // 方法
    public void method() {
        // 方法逻辑
    }
}

示例:

下面是一个简单的枚举类示例,用于表示星期的天数:

public enum WeekDay {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
    
    // 构造函数
    WeekDay() {
        System.out.println("Enum constant created: " + this);
    }
    
    // 方法
    public String getDescription() {
        switch (this) {
            case MONDAY:
                return "Start of work week";
            case FRIDAY:
                return "End of work week";
            case SATURDAY:
            case SUNDAY:
                return "Weekend";
            default:
                return "Work day";
        }
    }
    
    // 主方法,用于演示
    public static void main(String[] args) {
        for (WeekDay day : WeekDay.values()) {
            System.out.println(day + ": " + day.getDescription());
        }
    }
}

在这个示例中,WeekDay 枚举类定义了一周的七天。每个枚举常量在创建时都会调用构造函数。枚举类还定义了一个 getDescription 方法,它根据枚举常量返回相应的描述。

使用枚举:

枚举类可以使用 values() 方法获取所有枚举常量的数组。此外,可以使用 valueOf 方法将字符串转换为枚举常量。

public class EnumExample {
    public static void main(String[] args) {
        // 获取所有枚举常量
        WeekDay[] days = WeekDay.values();
        for (WeekDay day : days) {
            System.out.println(day);
        }
        
        // 将字符串转换为枚举常量
        WeekDay day = WeekDay.valueOf("FRIDAY");
        System.out.println(day.getDescription());
    }
}

输出结果如下:

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
Enum constant created: MONDAY
Enum constant created: TUESDAY
Enum constant created: WEDNESDAY
Enum constant created: THURSDAY
Enum constant created: FRIDAY
Enum constant created: SATURDAY
Enum constant created: SUNDAY
MONDAY: Start of work week
TUESDAY: Work day
WEDNESDAY: Work day
THURSDAY: Work day
FRIDAY: End of work week
SATURDAY: Weekend
SUNDAY: Weekend
FRIDAY: End of work week

枚举在 Java 中是一种非常有用的特性,它可以提供类型安全的数据结构,同时还可以包含方法和属性,使得代码更加清晰和易于维护。