当前位置:网站首页>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);
}
}边栏推荐
- “去虚向实”大潮下,百度智能云向实而生
- ubuntu20安装redisjson记录
- 数学归纳与递归
- About Estimation Statistics
- Cocos2d-x Box2D物理引擎编译设置
- Depth analysis of compilation constants, classloader classes, and system class loaders
- Lavel PHP artisan automatically generates a complete set of model+migrate+controller commands
- Room rate system - login optimization
- 杰理之RTC 时钟开发【篇】
- Variables, process control and cursors (MySQL)
猜你喜欢

Another million qubits! Israel optical quantum start-up company completed $15million financing

1200.Minimum Absolute Difference

19.(arcgis api for js篇)arcgis api for js线采集(SketchViewModel)

杰理之开启经典蓝牙 HID 手机的显示图标为键盘设置【篇】

2022.6.28

20.(arcgis api for js篇)arcgis api for js面采集(SketchViewModel)

Uniapp adaptation problem

Set static IP for raspberry pie

树莓派设置wifi自动连接

编译常量、ClassLoader类、系统类加载器深度探析
随机推荐
【colmap】已知相机位姿情况下进行三维重建
Jerry's RTC clock development [chapter]
装饰设计企业网站管理系统源码(含手机版源码)
What about SSL certificate errors? Solutions to common SSL certificate errors in browsers
[dream database] add the task of automatically collecting statistical information
Do you know the five most prominent advantages of E-bidding?
函数重入、函数重载、函数重写自己理解
C language string sorting
Install torch 0.4.1
sshd[12282]: fatal: matching cipher is not supported: aes256- [email protected] [preauth]
HDU ACM 4578 Transformation-&gt;段树-间隔的变化
Lingyun going to sea | yidiantianxia & Huawei cloud: promoting the globalization of Chinese e-commerce enterprise brands
pip只下载不安装
Jerry's ble exiting Bluetooth mode card machine [chapter]
Hazel engine learning (V)
[C language] question set of IX
树莓派设置wifi自动连接
【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
Domcontentloaded and window onload
Numpy中排序操作partition,argpartition,sort,argsort