/**
* 枚舉實體類
* @date 2019-12-12
*/
public class EnumModel {
private int code;
public String name;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**
* 枚舉的統一接口
* @since 2020-02-19
*/
public interface EnumMessage {
/**
* 枚舉的編碼
*/
int getCode();
/**
* 枚舉的名稱
*/
String getName();
}
// 實現統一枚舉類接口
public enum TaskType implements EnumMessage {
EXCEPTION_CHECK(1, "異常檢查任務"),
EXCEPTION_RECTIFY(2, "異常整改任務"),
CUSTOM_EXCEPTION_RECTIFY(3, "自定義異常整改任務");
private int code;
private String name;
public int getCode() {
return this.code;
}
public String getName() {
return this.name;
}
TaskType(int code, String name) {
this.code= code;
this.name= name;
}
}
/**
* 枚舉工具類
* @date 2020-02-12
*/
public class EnumUtil {
// 對應枚舉類的包路徑
public static final String defautPackage="com.xxx.quality.enums";
public static List<EnumModel> getByName(String shortName){
if (StringUtils.isEmpty(shortName)) {
return new ArrayList<>();
}
String methodName = "values";
String packageName=defautPackage+"."+shortName;
List<EnumModel> enumModels=new ArrayList<>();
try{
Class<?> cls= Class.forName(packageName);
Method method = cls.getMethod(methodName);
EnumMessage[] list = (EnumMessage[])method.invoke(null, null);
for(EnumMessage msg : list){
EnumModel model=new EnumModel();
model.setCode(msg.getCode());
model.setName(msg.getName());
enumModels.add(model);
}
}
catch (Exception ex){}
return enumModels;
}
}
/**
* 獲取枚舉映射關係
* @author xulihui
* @date 2020-02-12
*/
@RestController
@RequestMapping("/api/enum")
public class EnumController {
@GetMapping("/getByName")
public JsonResult getByName(@RequestParam(value = "name",required = false) String shortName) {
List<EnumModel> list= EnumUtil.getByName(shortName);
return JsonResult.ok(list);
}
}
訪問地址: http://地址/api/enum/getByName?name=TaskType 類名
返回結果:
{
"status": "ok",
"msg": "ok",
"data": [
{
"code": 1,
"name": "異常檢查任務"
},
{
"code": 2,
"name": "異常整改任務"
},
{
"code": 3,
"name": "自定義異常整改任務"
}
],
"timestamp": 1587133277375
}