枚举

枚举是 JDK5.0 中新增的,使用 enum 来定义一个枚举类。枚举通常用在可以穷举的、确定的类型中,当定义常量时,推荐使用枚举类。 如果枚举只有一个对象,则可以作为单例的实现方式。

使用 enum 定义的枚举类默认继承于 java.lang.Enum。枚举类中的常量其实就是一个个对象(使用构造方法创建的)。

public enum OneEnum {
    // 使用构造方法
    SUCCESS(200, "成功"),
    TIMEOUT(408, "超时")
    ;

    private int status;
    private String message;

    // 这个相当于构造方法
    OneEnum(int status, String message) {
        this.status = status;
        this.message = message;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

常用方法

  • toString()

    其父类(java.lang.Enum)已对该方法重写,返回当前枚举类常量的名称。

  • values()

    返回该类中所有的常量。

  • valueOf()

    查找是否存在某个对象,若找到,则返回该对象;否则,报错。

枚举类和普通类一样,也可以实现接口。但是,可以有特别的用法:

interface Show {
    void show();
}

public enum OneEnum implements Show {
    // 每一个单独重写 show()
    SUCCESS(200, "成功") {
        @Override
        public void show() {
            
        }
    },
    TIMEOUT(408, "超时") {
        @Override
        public void show() {
            
        }
    }
    ;
    
    // ...
}

单例模式

public enum AppThreadPool {
    EXECUTOR;
    
    AppThreadPool() { }
}