Skip to content

当我们定义一个枚举类时,我们使用关键字 enum。下面是一个简单的枚举类的示例:

enum Season {
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER
}

在上面的示例中,我们定义了一个名为Season的枚举类,它包含了四个枚举值:SPRINGSUMMERAUTUMNWINTER。这些枚举值代表了四个季节。你可以使用枚举值来表示特定的季节,例如:

Season currentSeason = Season.SUMMER;
System.out.println(currentSeason);  // 输出 "SUMMER"

枚举类的每个枚举值都是该枚举类的一个实例,你可以像使用普通对象一样使用它们。你还可以为枚举值添加方法和属性,使其具有更多的功能。

enum 的比较

在 Java 中,枚举类的比较可以使用==运算符进行,这是因为枚举类的常量是唯一的,每个常量都是枚举类的一个实例。

例如,假设我们有一个名为Day的枚举类,其中包含了一周的所有天数作为常量:

enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}

我们可以使用==运算符来比较枚举类的常量,例如:

Day day1 = Day.MONDAY;
Day day2 = Day.TUESDAY;

if (day1 == day2) {
    System.out.println("day1 and day2 are the same.");
} else {
    System.out.println("day1 and day2 are different.");
}

上述代码将输出day1 and day2 are different.,因为day1day2是不同的枚举常量。 除了使用==运算符进行比较外,还可以使用枚举类的equals()方法进行比较,它是从 Object 类继承而来的。例如:

if (day1.equals(day2)) {
    System.out.println("day1 and day2 are the same.");
} else {
    System.out.println("day1 and day2 are different.");
}

上述代码将输出day1 and day2 are different.,与使用==运算符的结果相同。

枚举类的比较是基于枚举常量的引用进行的,而不是基于常量的值。因此,如果两个枚举常量的引用相同,它们被认为是相等的,即使它们的值不同。

enum 的name()方法

在 Java 中,枚举类提供了一个名为name()的方法,用于获取枚举实例的名称。该方法返回一个字符串,表示该枚举实例的名称。例如,假设我们有一个名为Color的枚举类:

enum Color {
    RED, GREEN, BLUE;
}

我们可以使用name()方法获取每个枚举实例的名称:

Color red = Color.RED;
System.out.println(red.name()); // 输出 "RED"

name()方法对于获取枚举实例的名称非常有用,但需要注意的是,它返回的是枚举常量的名称,而不是枚举常量的值。如果需要获取枚举常量的值,可以使用枚举类的其他方法或属性来实现。

enum 的 ordinal() 方法

在 Java 中,枚举类提供了一个名为ordinal()的方法,用于获取枚举实例的序号。该方法返回一个整数,表示该枚举实例在枚举类中的位置。例如,假设我们有一个名为Color的枚举类:

enum Color {
    RED, GREEN, BLUE;
}

我们可以使用ordinal()方法获取每个枚举实例的序号:

Color red = Color.RED;
System.out.println(red.ordinal()); // 输出 0

Color green = Color.GREEN;
System.out.println(green.ordinal()); // 输出 1

Color blue = Color.BLUE;
System.out.println(blue.ordinal()); // 输出 2

ordinal()方法返回的序号是从0开始的,按照枚举常量在枚举类中定义的顺序进行分配的。需要注意的是,ordinal()方法对于比较枚举实例的顺序是有用的,但在其他情况下应谨慎使用,因为它依赖于枚举常量的定义顺序,如果枚举常量的顺序发生变化,可能会导致代码出现错误。