july
july
发布于 2023-01-03 / 121 阅读
0

Java枚举

枚举类

枚举是一种特殊数据类型,属于Java中引用类型。

定义枚举类时用关键字enum定义,列举出枚举的常量名(又可以称为值,元素),多个常量间使用,来分割 ,使用时只能选择枚举类定义的常量名使用,否则无法编译。enum 定义的类本身带有类型信息,编译器会自动检查出类型错误。不同类型的枚举不能相互比较或者赋值,因为类型不符合。

定义和使用

定义示例:

public enum WeekOfDay{
    Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}

使用实例:

public class WeekOfDayTest {
    public static void main(String[] args) {
        WeekOfDay weekOfDay = WeekOfDay.Monday;
        System.out.println(weekOfDay);
    }
}

枚举的比较

Java引用类型之间比较值不能用== 进行比较,用等号比较的是两个引用类型的变量是否是同一个对象或者说在堆空间是否为同一个地址,比较值就必须需要用equals() 方法,但enum 类型是个例外,这是因为enum 类型的每个常量在JVM中只有一个唯一的实例,所以可以用= 比较

枚举类的遍历

要遍历枚举的所有值,可以使用 Java 中的 EnumSet 或 Enum.values() 方法。以下是两种方法的示例:

使用 EnumSet

EnumSet<MyEnum> allValues = EnumSet.allOf(MyEnum.class);  // 获取 MyEnum 的所有枚举值

for (MyEnum value : allValues) {
    System.out.println(value);
}

在此示例中,我们使用 EnumSet.allOf(MyEnum.class) 方法获取 MyEnum 枚举的所有值,并使用 for 循环遍历所有枚举值。

使用 Enum.values()

for (MyEnum value : MyEnum.values()) {
    System.out.println(value);
}

在此示例中,我们使用 MyEnum.values() 方法获取 MyEnum 枚举的所有值,并使用 for 循环遍历所有枚举值。

请注意,这两种方法都会返回枚举类型的所有值,但是它们的实现方式略有不同。EnumSet 是一个专门用于处理枚举类型的集合类,它提供了更高效的存储和遍历枚举值的方式。而 Enum.values() 方法是在枚举类型中定义的静态方法,它直接返回枚举类型的所有值。

无论您选择哪种方法,都可以遍历枚举的所有值。