当前位置:网站首页>Enumeration general interface & enumeration usage specification
Enumeration general interface & enumeration usage specification
2022-07-07 03:25:00 【InfoQ】
- The field value in the data table is the field of finite sequence , Corresponding to the specific enumeration in the program . Try to use varchar replace int( or tinyint). Beyond all doubt , Letter combinations are always better than 0、1、2、3 Such numbers are easy to recognize .
- If the data table field has corresponding enumeration , be , The enumeration class name should be marked on the field annotation , Facilitate program traceability .
- Enumeration generally has two parts , One is to enumerate item values , One is enumeration description . that , How are these two attributes named ? code and desc? still value and desc? still key and value? This article focuses on this problem .
@Getter
@AllArgsConstructor
public enum LevelEnum {
FIRST("FIRST", " Class A "),
SECOND("SECOND", " second level "),
THIRD("THIRD", " Level three ");
private String code;
private String value;
public static LevelEnum getBeanByCode(String code) {
LevelEnum[] statusEnums = LevelEnum.values();
for (LevelEnum v : statusEnums) {
if (v.getCode().equals(code)) {
return v;
}
}
return null;
}
}@Getter
@AllArgsConstructor
public enum OrderStatusEnum {
INIT("INIT", " initial "),
ACCOUNTING("ACCOUNTING", " In bookkeeping "),
SUCCESS("SUCCESS", " Payment succeeded "),
FAILED("FAILED", " Payment failed ");
private String key;
private String description;
public static OrderStatusEnum getBeanByCode(String code) {
OrderStatusEnum[] values = OrderStatusEnum.values();
for (OrderStatusEnum v : values) {
if (v.getKey().equals(code)) {
return v;
}
}
return null;
}
}@AllArgsConstructor
public enum ProductEnum {
BOSSKG("BOSS starts "),
HUICHUXING(" Benefit travel "),
SICHEBANGONG(" Private car office "),
YOUFU(" Youfu "),
UNKNOWN(" Unknown "),
;
private String description;
private String getCode(){
return this.toString();
}
public String getDescription() {
return description;
}
public static ProductEnum getBean(String value) {
ProductEnum[] values = ProductEnum.values();
for(ProductEnum temp : values){
if(temp.getCode().equals(value)){
return temp;
}
}
return ProductEnum.UNKNOWN;
}
}@Getter
@AllArgsConstructor
public enum SeasonEnum {
SPRING(1, " In the spring "),
SUMMER(2, " In the summer "),
AUTUMN(3, " autumn "),
WINTER(4, " In the winter ");
private int code;
private String description;
public static SeasonEnum getBeanByCode(Integer code) {
if (null == code) return null;
SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum temp : values) {
if (temp.getCode() == code) {
return temp;
}
}
return null;
}
}/**
* If the enumeration name is different from the actual value , Be sure to rewrite getKey Method
* Enumeration definition specification : Remember to capitalize enumeration names , The description should be as clear as possible , Don't misspell , Please check carefully
* for example :
* MONDAY(" Monday "),
* TUESDAY(" Tuesday ")
*
* @author shaozhengmao
* @create 2021-06-21 10:18 In the morning
*/
public interface EnumAbility<T> {
/**
* Return the actual value of enumeration
* @return
*/
T getCode();
/**
* Return enumeration description
*
* @return Enumeration description
*/
String getDescription();
/**
* Compare whether the current enumeration object is consistent with the passed in enumeration value (String Types ignore case )
* Whether the current enumeration item matches the value passed in from the far end ( such as : Field value of database 、rpc The parameter value passed in )
*
* @param enumCode enumeration code
* @return match
*/
default boolean codeEquals(T enumCode) {
if (enumCode == null) return false;
if (enumCode instanceof String) {
return ((String) enumCode).equalsIgnoreCase((String) getCode());
} else {
return Objects.equals(this.getCode(), enumCode);
}
}
/**
* Compare whether the two enumeration items are identical (==)
*
* @param anotherEnum enumeration
* @return Are they the same?
*/
default boolean equals(EnumAbility<T> anotherEnum) {
return this == anotherEnum;
}
}
@Getter
@AllArgsConstructor
public enum LevelEnum implements EnumAbility<String> {
FIRST("FIRST", " Class A "),
SECOND("SECOND", " second level "),
THIRD("THIRD", " Level three ");
private String code;
private String value;
@Override
public String getDescription() {
return value;
}
/**
* 2021-12-18 23:00 zhanggz: There is ambiguity in this method , Please use {@link #getDescription()}
* @return
*/
@Deprecated
public String getValue() {
return value;
}
public static LevelEnum getBeanByCode(String code) {
return (LevelEnum) EnumAbilityUtil.getEnumByCode(LevelEnum.class, code);
}
}@Getter
@AllArgsConstructor
public enum OrderStatusEnum implements EnumAbility<String> {
INIT("INIT", " initial "),
ACCOUNTING("ACCOUNTING", " In bookkeeping "),
SUCCESS("SUCCESS", " Payment succeeded "),
FAILED("FAILED", " Payment failed ");
private String key;
private String description;
@Override
public String getCode() {
return key;
}
/**
* 2021-12-18 23:00 zhanggz: There is ambiguity in this method , Please use {@link #getCode()}
* @return
*/
@Deprecated
public String getKey() {
return key;
}
public static OrderStatusEnum getBeanByCode(String code) {
return (OrderStatusEnum) EnumAbilityUtil.getEnumByCode(OrderStatusEnum.class, code);
}
}@AllArgsConstructor
public enum ProductEnum implements EnumAbility<String> {
BOSSKG("BOSS starts "),
HUICHUXING(" Benefit travel "),
SICHEBANGONG(" Private car office "),
YOUFU(" Youfu "),
UNKNOWN(" Unknown "),
;
private String description;
@Override
private String getCode(){
return this.toString();
}
@Override
public String getDescription() {
return description;
}
public static ProductEnum getBean(String code) {
return (ProductEnum) EnumAbilityUtil.getEnumByCode(ProductEnum.class, code);
}
}@Getter
@AllArgsConstructor
public enum SeasonEnum implements EnumAbility<Integer> {
SPRING(1, " In the spring "),
SUMMER(2, " In the summer "),
AUTUMN(3, " autumn "),
WINTER(4, " In the winter ");
private Integer code;
private String description;
public static SeasonEnum getBeanByCode(Integer code) {
if (null == code) return null;
return (SeasonEnum) EnumAbilityUtil.getEnumByCode(SeasonEnum.class, code);
}
}边栏推荐
- Shangsilicon Valley JVM Chapter 1 class loading subsystem
- 杰理之关于 DAC 输出功率问题【篇】
- CVPR 2022 best paper candidate | pip: six inertial sensors realize whole body dynamic capture and force estimation
- Install torch 0.4.1
- About Confidence Intervals
- The latest 2022 review of "small sample deep learning image recognition"
- 存储过程与函数(MySQL)
- 【无标题】
- 数学归纳与递归
- 变量、流程控制与游标(MySQL)
猜你喜欢
随机推荐
CMB's written test - quantitative relationship
When you go to the toilet, you can clearly explain the three Scheduling Strategies of scheduled tasks
房费制——登录优化
Cocos2d-x Box2D物理引擎编译设置
杰理之FM 模式单声道或立体声选择设置【篇】
Another million qubits! Israel optical quantum start-up company completed $15million financing
pip只下载不安装
2022.6.28
应用程序启动速度的优化
亚像素级角点检测Opencv-cornerSubPix
24.(arcgis api for js篇)arcgis api for js点修改点编辑(SketchViewModel)
Experience design details
How to replace the backbone of the model
杰理之播内置 flash 提示音控制播放暂停【篇】
存储过程与函数(MySQL)
Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
注意力机制原理
The latest 2022 review of "small sample deep learning image recognition"
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
Household appliance industry under the "retail is king": what is the industry consensus?

![[tools] basic concept of database and MySQL installation](/img/9c/626e42097050517a13a2ce7cdab1bb.jpg)







