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);
}
}
結果如圖:
本作品採用《CC 協議》,轉載必須註明作者和本文連結