统一枚举,对外提供一劳永逸的访问接口

2023-11-15

/**
 * 枚举实体类
 * @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
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

统一枚举,对外提供一劳永逸的访问接口 的相关文章

  • import java 导入错误:没有名为 java 的模块

    我似乎遇到了障碍 根本无法解决这个问题 任何人都可以帮我弄清楚为什么我无法导入 java 模块吗 Error Traceback most recent call last File datasource config py line 3
  • Java 比 Xmx 参数消耗更多内存

    我有一个非常简单的 Web 服务器类 基于 Java SEHttpServer class 当我使用此命令启动编译的类来限制内存使用时 java Xmx5m Xss5m Xrs Xint Xbatch Test 现在如果我使用检查内存top
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 调试器不会停止在 Intellij IDEA 中的源代码处

    我有一个相当奇怪的问题 无法使用 Intellij IDEA 解决 我正在解析电子邮件文件org apache james mime4j包裹 但我的邮件文件格式不兼容Date 标头 因此 我从 mime4j 源创建了模块 并从磁盘中删除了
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • 带嵌入式 tomcat 的 spring-boot 不会将请求分派到控制器

    我有一个使用 spring boot 和嵌入式 Tomcat 容器的应用程序 据我所知 我的代码与 spring boot 相同示例项目 https github com spring projects spring boot tree m
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • 在 alpine / Jprofile 10 中运行 jpenable 时出现 UnsatisfiedLinkError

    当运行 jpenable 以允许在运行 JDK 8 的 alpine 3 3 容器中对 Jprofiler10 进行分析时 我收到 UnsatisfiedLinkError 异常 有任何想法吗 ERROR The agent could n
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 竞争条件和 Clojure Atoms

    clojure atom 的文档指出 Changes to atoms are always free of race conditions 然而 竞争条件不仅是根据更改定义的 而且是在不同线程中并行逻辑操作的上下文中定义的 我想知道 保证
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • org.apache.poi 中的异常

    我试图编写一个可以读取和写入的程序 xlsx文件中 下面提供的代码旨在能够编写其第一个 Excel 程序 package excel reader import java io FileOutputStream import java io
  • 将序列化数据发送到 servlet 时出现 java.io.EOFException

    我正在尝试从 Java 本地应用程序上传一个包含文件到服务器的对象 我的计划是 在 tomcat 上运行的 servlet 将使用以下方法获取对象ObjectInputStream in the doGet方法 但我得到一个EOFExcep
  • Java 日期和 MySQL 时间戳时区

    我正在编辑一段代码 其基本功能是 timestamp new Date 然后坚持下去timestamp中的变量TIMESTAMPMySQL 表列 然而 通过调试我看到Date显示在正确时区的对象 GMT 1 当持久化在数据库上时 它是GMT
  • 使用替换但不使用根元素的 Jaxb 继承

    我正在浏览布莱斯的博客http blog bdoughan com 2010 11 jaxb and inheritance using substitution html http blog bdoughan com 2010 11 ja
  • CreateProcess error=206,运行 gwtCompile 时文件名或扩展名太长

    我的应用程序是一个 springboot gradle 应用程序 我的应用程序的一部分涉及使用 gradle 进行遗留 gwt 编译 它工作正常 但今天当我运行下面的 gradle 任务时 它显示 CreateProcess error 2
  • 与手动搜索列表相比,Collections.binarySearch 的性能如何?

    我想知道该使用哪一个 我有一份学生名单 我想用他的名字搜索一个学生 到目前为止 我是通过迭代列表手动完成的 如下所示 for int i 0 i lt list size i Student student list get i if st

随机推荐

  • 数据清洗常见问题(新手踩坑合集)【不定期更新】

    1 CSV打开发生错误 有些时候csv用pandas的pd read csv 地址 打开某些表格 横轴上无索引的 会出现这种情况 出现这样的情况后array的转化就十分不好搞 所以要加上一个 header None f pd read cs
  • 1024徽章获取

    听说今天发文章可以领徽章来着 作为一名准程序员也是有必要领一下得
  • IDEA报错:Error running ‘xxxApplication‘: Command line is too long. Shorten command line for xxxApp...

    1 找到 idea workspace xml 2 在 idea workspace xml里面找到
  • svc错误

    add N C Users Administrator workspace First WebContent testajax jsp Attempted to lock an already locked dir svn Working
  • springboot集成redis并设置过期时间

    redis作为常用的缓存工具在日常中经常使用 首先是下载redis redis github 选择windows linux安装即可 不会自己百度 下载好后配置 redis配置文件设置访问密码为123456 开始集成 maven依赖
  • 前端性能优化

    页面的性能指标 DCL DOMContentLoaded DOM解析完毕 FP First Paint 表示渲染出第一个像素点 FP一般在HTML解析完成或者解析一部分时候触发 FCP First Contentful Paint 表示渲染
  • element-ui table分页/筛选后保留勾选项

    在使用elementui中的table时 有时会涉及到勾选完数据切换页数或者使用搜索框搜索后已勾选数据消失 而elementul有个属性可以处理这个情况 reserve selection和row key搭配使用 使用步骤 在table上加
  • Android安卓webview,网页端生成安卓项目(极速生成)教程

    Android安卓webview 网页端生成安卓项目 极速生成 教程 一 前言 当自己做了一个PC端的页面 也就是前端的页面 或者已经上服的页面 但也想生成一个安卓端供用户使用 本教程详细讲解如何把前端html页面或者链接生成安卓端项目 本
  • 蓝桥杯青少C++省赛备赛指南和真题详解

    蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事 已经成功举办了13届 历时14年 蓝桥杯大赛首席专家倪光南院士说 蓝桥杯以考促学 塑造了领跑全国的人才培养选拔模式 并获得了行业的深度认可 随着蓝桥杯加入国家白名单赛事 含
  • STM32传感器外设集--超声波模块(HC_SR04)

    目录 1 器件介绍 1 1 参数 1 2 测量范围 1 3 计算公式 1 4 优点 2 1 原理 3 代码编写 3 1 接线图 3 2 代码 3 2 1 HC SR04 h 3 2 2 HC SR04 c 3 2 3 timer h 3 2
  • 电子密码锁

    摘要 数字密码锁是二十一世纪制锁业的一次革命 密码锁的特点是不用钥匙 无锁孔 机械传动 不易损坏 不磨损 不易被破译 可多次更换密码 换号不换锁 一把锁多个密码 具有防拨 防砸 防撬 防堵等功能 安装门锁时不破坏原门的结构 避免用钥匙开启旋
  • DAP组件外部服务开发说明

    DAP数据分析平台主要是为了满足企业数据分析的需要而开发的一款产品 不同于一般的BI平台 DAP数据分析平台更侧重数据的聚合 平台预置有数据源注册 ODS注册与管理 数仓配置与数据聚合 从而实现企业业务数据的统一 构建企业统一的 标准的 完
  • 每日英语--Week15

    文章目录 一 First Day 二 Second Day 三 Third Day 四 Fourth Day 五 Fifth Day 一 First Day 例句 It has been a crazy year for you Like
  • include的路径说明 VS C++ 路径中\\与/

    https www cnblogs com yliu archive 2011 06 16 2082370 html 这篇文章言简意赅的描述了不同写法的路径差异 C 路径中 与 1 windows默认使用 2 linux默认使用 3 可以都
  • Ubuntu下在pycharm中下载库出现ModuleNotFoundError: No module named 'distutils.core'

    根据pycharm项目选择的python版本 python2命令端执行 sudo apt get install python pip python3命令端执行 sudo apt get install python3 pip
  • 为什么公司在对数据库的数据进行删除操作的时候都建议软删?

    我们平时在建表的时候 相信大家有时候会被告知再添加一个额外的字段来判断当前记录是否需要使用 也就是软删 我在公司也是严禁删除数据 只能使用软删 我刚开始也是以为是防止误删或者有一个记录留存 但是其实我们每个操作都会记录操作日志的 所以真实目
  • go-fastdfs

    go fastdfs是一个基于http协议的分布式文件系统 它基于大道至简的设计理念 一切从简设计 使得它的运维及扩展变得更加简单 它具有高性能 高可靠 无中心 免维护等优点 使用文档 安装 查找镜像 docker search go fa
  • vue input双向绑定赋值,input有值不显示,出现一个提示

    vue input双向绑定赋值 input有值不显示 出现一个提示 The specified value wxssdd23u992 cannot be parsed or is out of range at view umd min j
  • 区块链技术简介

    前言 本文是对区块链技术的简介总结 如果要对区块链技术详细了解和学习 可参考廖雪峰老师的区块链教程 1 1什么是区块链 技术角度 定义 区块链 Blockchain 是一种由多方共同维护 使用密码学保证传输和访问安全 能够实现数据一致存储
  • 统一枚举,对外提供一劳永逸的访问接口

    枚举实体类 date 2019 12 12 public class EnumModel private int code public String name public int getCode return code public v