分享一下我是怎么使用枚举的

一、介绍

对于java枚举不陌生了,直接上代码

二、代码

使用了一个接口,用来规定一下里面的字段,统一下好处理

1
2
3
4
5
6
7
8
9
package com.banmoon.test.enums;

public interface MyEnum<T> {

T getCode();

String getMsg();

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.banmoon.test.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

@Getter
@AllArgsConstructor
public enum EnableStatusEnum implements MyEnum<Integer>{
ZERO(0, "禁用"),
ONE(1, "正常"),
;

public final Integer code;
public final String msg;

public static EnableStatusEnum getByCode(Integer code) {
return getByCode(code, null);
}

public static EnableStatusEnum getByCode(Integer code, EnableStatusEnum defaultEnum) {
return Arrays.stream(values()).filter(a -> a.getCode().equals(code)).findFirst().orElse(defaultEnum);
}

public static String getMsgByCode(Integer code) {
return getMsgByCode(code, "");
}

public static String getMsgByCode(Integer code, String defaultMsg) {
return Arrays.stream(values()).filter(a -> a.getCode().equals(code)).findFirst().map(EnableStatusEnum::getMsg).orElse(defaultMsg);
}

}

大家也都知道,枚举这东西对于一批固定的几个状态值进行管理。

通常是某张表的一些状态值,如果一张表里面有多个状态值,我们可以这样写一个常量类,里面放置每一个字段的枚举类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package io.yunshuo.dataset.enums;

import io.yunshuo.commons.tools.exception.RenException;
import io.yunshuo.dataset.entity.DataDatasetVersionEntity;
import lombok.AllArgsConstructor;
import lombok.Getter;

public class DataVersionConstant {

/**
* 导入状态 0:无状态 1:导入中 2:导入完成
*/
@Getter
@AllArgsConstructor
public enum ImportStatus {

STATUS_LESS(0, "无状态"),
IMPORTING(1, "导入中"),
IMPORT_SUCCESS(2, "导入成功"),
;

private final Integer code;
private final String msg;
}

/**
* 导出状态 0:无状态 1:导出中 2:导出完成
*/
@Getter
@AllArgsConstructor
public enum ExportStatus {

STATUS_LESS(0, "无状态"),
EXPORTING(1, "导出中"),
EXPORT_SUCCESS(2, "导出成功"),
;

private final Integer code;
private final String msg;
}

/**
* 标注状态 0:未标注 1:手动标注中 2:自动标注中 3:自动标注完成 4:标注完成
*/
@Getter
@AllArgsConstructor
public enum AnnotateStatus {

NOT_ANNOTATE(0, "未标注"),
ANNOTATING(1, "手动标注中"),
AUTO_ANNOTATING(2, "自动标注中"),
AUTO_ANNOTATE_SUCCESS(32, "自动标注完成"),
ANNOTATE_SUCCESS(4, "标注完成"),
;

private final Integer code;
private final String msg;
}

/**
* 增强状态 0:无状态 1:增强中 2:增强完成
*/
@Getter
@AllArgsConstructor
public enum EnhanceStatus {

STATUS_LESS(0, "无状态"),
ENHANCING(1, "增强中"),
ENHANCE_SUCCESS(2, "增强完成"),
;

private final Integer code;
private final String msg;
}

/**
* 清洗状态 0:无状态 1:清洗中 2:清洗完成
*/
@Getter
@AllArgsConstructor
public enum CleanStatus {

STATUS_LESS(0, "无状态"),
CLEANING(1, "清洗中"),
CLEAN_SUCCESS(2, "清洗完成"),
;

private final Integer code;
private final String msg;
}

}

三、最后

没什么技术含量的,就是分享一下,我是这样使用枚举的

我觉得挺清晰明了的

我是半月,你我一同共勉!!!