Java 枚举

枚举

enum 枚举是一个特殊的 "类",表示一组 常量(不可更改的变量,如 final 变量)。

要创建枚举,请使用 enum 关键字(而不是类或接口),并用逗号分隔常量。请注意,它们应该是大写字母:

实例
  1. enum Level {
  2. LOW,
  3. MEDIUM,
  4. HIGH
  5. }

可以使用 语法访问枚举常量:

  1. enum Level {
  2. LOW,
  3. MEDIUM,
  4. HIGH
  5. }
  6. public class Main {
  7. public static void main(String[] args) {
  8. Level myVar = Level.MEDIUM;
  9. System.out.println(myVar);
  10. }
  11. }

Enum 是 "enumerations" 的缩写,意思是 "specifically listed" 特别列表.


类中的枚举

你也可以在一个类中使用枚举:

实例
  1. public class Main {
  2. enum Level {
  3. LOW,
  4. MEDIUM,
  5. HIGH
  6. }
  7. public static void main(String[] args) {
  8. Level myVar = Level.MEDIUM;
  9. System.out.println(myVar);
  10. }
  11. }

输出将为:

MEDIUM

Switch 语句中的枚举

枚举经常在 switch 语句中用于检查相应的值:

实例
  1. enum Level {
  2. LOW,
  3. MEDIUM,
  4. HIGH
  5. }
  6. public class Main {
  7. public static void main(String[] args) {
  8. Level myVar = Level.MEDIUM;
  9. switch(myVar) {
  10. case LOW:
  11. System.out.println("Low level");
  12. break;
  13. case MEDIUM:
  14. System.out.println("Medium level");
  15. break;
  16. case HIGH:
  17. System.out.println("High level");
  18. break;
  19. }
  20. }
  21. }

输出将为:

Medium level

循环遍历枚举

枚举类型有一个 values() 方法,该方法返回所有枚举常量的数组。当需要循环遍历枚举的常量时,此方法非常有用:

实例
  1. for (Level myVar : Level.values()) {
  2. System.out.println(myVar);
  3. }

输出结果将为:

LOW
MEDIUM
HIGH

枚举和类之间的区别

enum 枚举可以像 class 类一样具有属性和方法。唯一的区别是枚举常量是 public 公共的、static 静态的和 final(不可更改-无法重写)。

枚举不能用于创建对象,也不能扩展其他类(但可以实现接口)。为什么以及何时使用枚举?

当你知道自己的值不会改变时,比如月日、颜色、卡片组等,可以使用枚举。