清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java 基础

    • 简介
    • 第一个 Java 代码
    • 数据类型
    • 变量
    • 进制
    • 导包
    • 输入
    • 数据类型转换
    • 运算符
    • 随机数
    • 流程控制
    • 访问修饰符
    • 面向对象
    • 重载与重写
    • 程序执行流程
    • 方法参数的值传递
    • 多线程
    • Java 常用类
    • 枚举
    • 注解 Annotation
    • 集合
    • 泛型
    • IO
    • 网络编程
    • 反射
    • lambda
    • 类加载
    • 正则表达式
    • 字符集

枚举

枚举是 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() { }
}

提示

Java单例模式的7种写法中,为何用Enum枚举实现被认为是最好的方式?

想要编辑此页?
上次更新: 2023/6/2 17:30
贡献者: djf, Junfeng Dai
←Java 常用类注解 Annotation→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号