/**
* 枚举实体类
* @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;
}
public static String getNameByCode(Integer code) {
TaskType[] values = TaskType.values();
for (TaskType type : values) {
if (type.getCode() == code) {
return type.getName();
}
}
return "";
}
public static String getByName(Integer code) {
TaskType[] values = TaskType.values();
for (TaskType type : values) {
if (type.getCode() == code) {
return type.getName();
}
}
return null;
}
public static NetworkProtocolType getByCode(int code) {
TaskType[] values = TaskType.values();
for (TaskType type : values) {
if (type.getCode() == code) {
return type;
}
}
return null;
}
}
import org.springframework.util.StringUtils;
/**
* 枚举工具类
* @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+"."+StringUtils.capitalize(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
}