目录
一、引入jar
二、公用接口
三、自定义枚举类
四、枚举工厂类
五、获取所有的枚举类参数
项目开发时,我们会写很多枚举类,有的是后端自己使用,有的给前端当做字典使用。
可以通过此工具包统一获取:
org.apache.commons:commons-lang3
一、引入jar
maven:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
gradle:
// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
implementation 'org.apache.commons:commons-lang3:3.12.0'
二、公用接口
public interface TypeEnum {
/**
* 自定义索引
* @return
*/
Integer index();
/**
* 字段
* @return
*/
String field();
/**
* 描述
* @return
*/
String desc();
}
三、自定义枚举类
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum xxxEnum implements TypeEnum {
id(1, "ID", "id"),
title(2, "标题", "title"),
name(3, "用户名称", "name");
private Integer index;
private String desc;
private String field;
/**
* 获取对应枚举类型
*
* @param index
* @return
*/
public static xxxEnum getEnum(Integer index) {
for (xxxEnum enum : xxxEnum.values()) {
if (intervalType.getIndex().intValue() == index.intValue()) {
return intervalType;
}
}
return null;
}
public static xxxEnum getEnumByDesc(String desc) {
for (SingleExcelEnum enum : xxxEnum.values()) {
if (intervalType.getDesc().equals(desc)) {
return intervalType;
}
}
return null;
}
@Override
public Integer index() {
return index;
}
@Override
public String field() {
return field;
}
@Override
public String desc() {
return desc;
}
}
四、枚举工厂类
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.ToString;
@Getter
@ToString
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum EnumFactory {
xxxEnum("xxxEnum", "XXX枚举类", xxxEnum.class);
private String method;
private String methodName;
private Class methodClass;
EnumFactory(String method, String methodName, Class methodClass) {
this.method = method;
this.methodName = methodName;
this.methodClass = methodClass;
}
/**
* 获取对应枚举类型
*
* @param method
* @return
*/
public static EnumFactory getEnum(String method) {
for (EnumFactory enums : EnumFactory.values()) {
if (enums.getMethod().equals(method)) {
return enums;
}
}
return null;
}
}
五、获取所有的枚举类参数
import cn.golaxy.bd.core.utils.EnumUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@AllArgsConstructor
public class EnumService {
/**
* @param type
* @return java.lang.String
* @Description 获取枚举字典
*/
public List getEnumByType(String type) {
List<EnumFactory> enumsList = EnumUtils.getEnumList(EnumFactory.class);
List<Map> resultList = new ArrayList<>();
enumsList.stream().forEach(enums -> {
Map<String, Object> map = new HashMap<>();
map.put("key", enums.getMethod());
map.put("keyName", enums.getMethodName());
List<Map> dictList = new ArrayList<>();
Map<String, TypeEnum> baseEnumMap = EnumUtils.getEnumMap(enums.getMethodClass());
baseEnumMap.forEach((k, v) -> {
Map dictMap = new HashMap();
dictMap.put("index", v.index());
dictMap.put("field", v.field());
dictMap.put("desc", v.desc());
dictList.add(dictMap);
});
map.put("dictList", dictList);
resultList.add(map);
});
return resultList;
}
}
|