Java枚举类,你们用对了吗?

Java
339
0
0
2022-09-18

Java 枚举(enum)

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

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

例如定义一个事件级别的枚举类。

package com.suninfo.alert.constant.incident;

import java.util.stream.Stream;

/**
 * 事件级别枚举
 *
 */
public enum AbnormalLevelEnum {

    UNKNOWN(0, "未知"),
    NORMAL(1, "正常"),
    PROMPT(2, "提示"),
    ALARM(3, "警告"),
    SECONDARY(4, "次要"),
    MAIN(5, "主要"),
    SEVERITY(6, "严重");

    public Integer getValue() {
        return value;
    }

    private Integer value;
    private String description;

    AbnormalLevelEnum(Integer value, String description) {
        this.value = value;
        this.description = description;
    }
    /*
    *通过数值查询描述信息
    */ 
    public static String getName(Integer value){
        return Stream.of(AbnormalLevelEnum.values())
            .filter(c -> c.value == value)
            .findAny()
            .orElse(null).description;
    }
}

2022-06-14 完善更方便的用法

package com.xiao.test; /**
 * @author zhangxiao
 * @qq 490433117
 * @create_date 2022/6/2 17:02
 */
/**
 * @author zhangxiao
 * @date 2022/6/2 17:02
 */
public class IndexTest {
  public static void main(String[] args) {
  String description1 = StatusEnum.FAIL.getDescription();
  System.out.println(description1);
  String description = StatusEnum.getStatusType(2).getDescription();
  System.out.println(description);
  StatusEnum statusType = StatusEnum.getStatusType(2);
  switch (statusType){
  case BAD:
  System.out.println("bad");
  break;
  case SUCCESS:
  System.out.println("success");
  break;
  case FAIL:
  System.out.println("fail");
  break;
  default:
  System.out.println("default ");
  break;
 }
}
package com.xiao.test;

import lombok.Getter;

import java.util.stream.Stream;

@Getter
public enum StatusEnum {
    SUCCESS(1,"成功"),
    FAIL(2,"失败"),
    BAD(3,"系统内部错误");

    private Integer value;
    private String description;

    StatusEnum(int value, String description) {
        this.value = value;
        this.description = description;
    }

    public static StatusEnum getStatusType(int value){
       return Stream.of(StatusEnum.values()).filter(s->s.getValue().equals(value)).findAny().orElse(null);
    }

}

结果如图:

Java枚举类,你们用对了吗?