跳至主要內容

Java基础 - 枚举类

Zenghr大约 1 分钟Java

Java基础 - 枚举类

本文介绍 Java 枚举类的相关知识

枚举类的介绍

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等

枚举类的使用规则

  • 类的对象是确定的有限个数

  • 当需要定义一组常量时,建议使用枚举

  • 如果枚举类中只有一个对象,则可以作为单例模式的实现方法

  • 枚举类不能被继承

  • 枚举类不能被单独的new创建对象

  • 枚举类的构造器是私有的

枚举类的应用场景

  • 星期: Monday(星期一)、Tuesday(星期二)、Wednesday(星期三)、Thursday(星期四)、Firday(星期五)、Saturday(星期六)、Sunday(星期日)
  • 性别: Man(男)、Woman(女)
  • 季节: Spring(春天)、Summer(夏天)、Autumn(秋天)、Winter(冬天)
  • 支付方式: Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)
  • 订单状态: Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Return(退货)、Checked(已确认)
  • 线程状态: Establish(创建)、Ready(就绪)、Run(运行)、Obstruct(阻塞)、Die(死亡)
  • 等等……

使用案例

/**
 * redis的key的管理类
 * 约定:一个redis key 映射一个枚举实例
 */
@Getter
public enum RedisKeys {
    //用户登录key 实例
    USER_LOGIN_TOKEN("user_login_token", 30 * 60L ),
    //注册短信验证码key 实例
    REGIST_VERIFGY_CODE("regist_verifgy_code", 5 * 60L );

    private String prefix;  // key的前缀
    private Long time;    //key有效时间, 单位是s
    private RedisKeys(String prefix, Long time){
        this.prefix = prefix;
        this.time = time;
    }
    //拼接出完整redis的key
    public String join(String... values){
        StringBuilder sb = new StringBuilder(80);
        sb.append(this.prefix);
        for (String value : values) {
            sb.append(":").append(value);
        }
        return sb.toString();
    }
}