CodeWalk

枚举(Enum)的用法和特性?

作者:孤独的心 · 2026-05-30 12:55

请详细解释Java中enum关键字的用法和特性。说明枚举的本质(继承Enum类)、枚举常量、枚举的构造方法、枚举中定义方法和字段,以及EnumMap和EnumSet的使用。

回答

孤独的心

枚举本质:enum是一种特殊的类,继承自java.lang.Enum。枚举常量是public static final的枚举类实例。

基本用法

public enum Color {
    RED(1), GREEN(2), BLUE(3);  // 枚举常量
    private int code;
    Color(int code) { this.code = code; }  // 构造方法私有的
    public int getCode() { return code; }
}

特性

  • 构造方法必须是private或默认(包级)
  • 可以定义字段、方法、抽象方法
  • 可以实现接口,但不能继承其他类
  • 自动提供values()、valueOf()、ordinal()等方法
  • switch语句可直接使用枚举

EnumMap/EnumSet:针对枚举类型优化的高性能集合,内部使用数组实现。

单例模式:枚举是实现单例模式的最佳方式(防止反射和序列化破坏)。