当前位置: 首页 > news >正文

【精品】关于枚举的高级用法

枚举父接口

public interface BaseEnum {Integer getCode();String getLabel();/*** 根据值获取枚举** @param code* @param clazz* @return*/static <E extends Enum<E> & BaseEnum> E getEnumByCode(Integer code, Class<E> clazz) {Objects.requireNonNull(code);// 获取类型下的所有枚举EnumSet<E> allEnums = EnumSet.allOf(clazz);return allEnums.stream().filter(e -> e.getCode().equals(code)).findFirst().orElse(null);}/*** 根据文本标签获取枚举** @param label* @param clazz* @return*/static <E extends Enum<E> & BaseEnum> E getEnumByLabel(String label, Class<E> clazz) {Objects.requireNonNull(label);// 获取类型下的所有枚举EnumSet<E> allEnums = EnumSet.allOf(clazz);return allEnums.stream().filter(e -> e.getLabel().equals(label)).findFirst().orElse(null);}/*** 根据值获取文本标签** @param code* @param clazz* @return*/static <E extends Enum<E> & BaseEnum> String getLabelByCode(Integer code, Class<E> clazz) {// 根据值获取枚举E matchEnum = getEnumByCode(code, clazz);if (matchEnum != null) {return matchEnum.getLabel();}throw new RuntimeException("根据值获取文本标签失败");}/*** 根据文本标签获取值** @param label* @param clazz* @return*/static <E extends Enum<E> & BaseEnum, T> int getCodeByLabel(String label, Class<E> clazz) {// 根据文本获取枚举E matchEnum = getEnumByLabel(label,clazz);if (matchEnum != null) {return matchEnum.getCode();}throw new RuntimeException("根据文本标签获取值失败");}}

枚举

public enum StateEnum implements BaseEnum {/*** 启用*/ENABLE(1, "启用"),/*** 禁用*/DISABLE(0, "禁用");@Getterprivate final Integer code;@Getterprivate final String label;StateEnum(Integer code, String label) {this.code = code;this.label = label;}}

测试代码

 public static void main(String[] args) {//根据值获取枚举final StateEnum s1 = BaseEnum.getEnumByCode(1, StateEnum.class);System.out.println(s1);//根据标签获取枚举final StateEnum s2 = BaseEnum.getEnumByLabel("启用", StateEnum.class);System.out.println(s2);//根据值获取标签final String label = BaseEnum.getLabelByCode(1, StateEnum.class);System.out.println(label);//根据标签获取值final int code = BaseEnum.getCodeByLabel("禁用", StateEnum.class);System.out.println(code);
}

结果

在这里插入图片描述

相关文章:

【精品】关于枚举的高级用法

枚举父接口 public interface BaseEnum {Integer getCode();String getLabel();/*** 根据值获取枚举** param code* param clazz* return*/static <E extends Enum<E> & BaseEnum> E getEnumByCode(Integer code, Class<E> clazz) {Objects.requireNonN…...

Vue2学习第一天

Vue2 学习第一天 1. 什么是 vue? Vue 是一套用于构建用户界面的渐进式框架。 2. vue 历史 vue 是在 2013 年创建的&#xff0c;vue3 是 2020 出现的&#xff0c;现在主要是用 vue2&#xff0c;创新公司用的是 vue3 vue 的作者是尤雨溪&#xff0c;vue 的搜索热度比 react…...

HAL STM32通过multi_button库处理按键事件

HAL STM32通过multi_button库处理按键事件 &#x1f4cd;作者&#xff1a;0x1abin的multi_button库:https://github.com/0x1abin/MultiButton &#x1f4d8;MultiButton简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块&#xff0c;可无限量扩展按键&#xff0c;…...

随机过程及应用学习笔记(一)概率论(概要)

概率是随机的基础&#xff0c;在【概率论&#xff08;概要&#xff09;】这个部分中仅记录学习随机过程及应用的基本定义和结果。 前言 首先&#xff0c;概率论研究的基础是概率空间。概率空间由一个样本空间和一个概率测度组成&#xff0c;样本空间包含了所有可能的结果&…...

洛谷_P1059 [NOIP2006 普及组] 明明的随机数_python写法

这道题的关键在于去重和排序&#xff0c;去重可以联想到集合&#xff0c;那排序直接使用sort方法。 n int(input()) data set(map(int,input().split( ))) data list(data) data.sort() print(len(data)) for i in data:print(i,end )...

爆火的人工智能开源open-interpreter源码解析

今天这篇文章带大家一起来阅读下github上爆火的开源项目 open-interpreter的源代码&#xff0c;相当于是一个可以本地部署的openai code-interpreter。 今天这期我们透过现象看本质&#xff0c;一起来剖析下他的源码。 体验open-interpreter的视频地址 open-interpreter&…...

POM设计模式思路,详解POM:概述与介绍,POM思路梳理+代码示例(全)

概述 在UI自动化测试中&#xff0c;POM模式是一种设计思路&#xff0c;它的核心思想是方法的封装。它将方法类和页面元素进行分离&#xff0c;增强了代码的可维护性。值得注意的是&#xff0c;这种分层的设计模式&#xff0c;最好也是从线性代码开始&#xff0c;逐步将代码进行…...

1、学习 Eureka 注册中心

学习 Eureka 注册中心 一、创建 Eureka 微服务0、SpringBoot 和 SpringCloud 版本1、引入 Eureka 服务端依赖2、启动类加 EnableEurekaServer 注解3、配置 yaml 文件&#xff0c;把 Eureka 服务注册到 Eureka 注册中心4、访问 Eureka 服务端&#xff0c;查看注册中心的服务列表…...

何为分账系统?

1、分账系统产生的背景 在数字化浪潮下第三方支付价值凸显&#xff0c;大大提升资金流与信息流流转效率&#xff0c;成为构建产业数字化重要枢纽。近年来&#xff0c;基于云计算、大数据、人工智能、物联网等技术积累&#xff0c;以第三方支付为切点的金融科技创新爆发着强大的…...

机器学习10-特征缩放

特征缩放的目的是确保不同特征的数值范围相近&#xff0c;使得模型在训练过程中更加稳定&#xff0c;加速模型收敛&#xff0c;提高模型性能。具体而言&#xff0c;零均值和单位方差的目标有以下几点好处&#xff1a; 1. 均值为零&#xff08;Zero Mean&#xff09;&#xff1a…...

Java基于微信小程序的医院挂号小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

HarmonyOS一杯冰美式的时间 -- 验证码框

一、前言 像是短密码、验证码都有可能需要一个输入框&#xff0c;像是如下&#xff1a; 恰好在写HarmonyOS的时候也需要写一个验证码输入框&#xff0c;但是在实现的时候碰了几次灰&#xff0c;觉得有必要分享下&#xff0c;故有了此篇文章。 如果您有任何疑问、对文章写的不…...

GitLab配置SSHKey

段落一&#xff1a;什么是SSH密钥 SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于安全地远程登录和执行命令。SSH密钥是一种用于身份验证的加密文件&#xff0c;它允许您在与远程服务器通信时&#xff0c;无需输入密码即可进行认证。在GitLab中配置S…...

通过QT制作一个模仿微信主界面的界面(不要求实现具体通信功能)

main.cpp #include "widget.h" #include "second.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();//实例化第二个界面Second s;QObject::connect(&w, &Widget::my_jump, &…...

作物模型狂奔:WOFOST(PCSE) 数据同化思路

去B吧&#xff0c;这里没图 整体思路&#xff1a;PCSE -》 敏感性分析 -》调参 -》同化 0、准备工作 0.0 电脑环境 我用的Win10啦&#xff0c;Linux、Mac可能得自己再去微调一下。 0.1 Python IDE 我用的Pycharm&#xff0c;个人感觉最好使的IDE&#xff0c;没有之一。 …...

腾讯云4核8G服务器能支持多少人访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…...

多重背包问题 ⅠⅡ Ⅲ

有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。 输入 第一行两个整数&#xff0c;N&#xf…...

挑战杯 python的搜索引擎系统设计与实现

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python的搜索引擎系统设计与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;5分创新点&#xff1a;3分 该项目较为新颖&#xff…...

【LeetCode: 103. 二叉树的锯齿形层序遍历 + BFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

C#学习(十三)——多线程与异步

一、什么是线程 程序执行的最小单元 一次页面的渲染、一次点击事件的触发、一次数据库的访问、一次登录操作都可以看作是一个一个的进程 在一个进程中同时启用多个线程并行操作&#xff0c;就叫做多线程 由CPU来自动处理 线程有运行、阻塞、就绪三态 代码示例&#xff1a; cl…...

nli-distilroberta-base在智能客服中的应用:自动判断用户问句与知识库答案的关系

nli-distilroberta-base在智能客服中的应用&#xff1a;自动判断用户问句与知识库答案的关系 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务&#xff0c;专门用于判断两个句子之间的逻辑关系。在智能客服场景中&#xff0c;这项…...

MOOTDX:Python通达信数据接口解决方案

MOOTDX&#xff1a;Python通达信数据接口解决方案 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资领域&#xff0c;数据获取与处理始终是从业者面临的核心挑战。个人投资者常常困于复杂…...

C++的std--ranges代码生成

C20引入的std::ranges库彻底改变了代码生成的范式&#xff0c;它将函数式编程与现代C特性结合&#xff0c;让开发者能以声明式语法高效生成和处理数据流。这一特性不仅提升了代码可读性&#xff0c;还通过编译期优化显著提升性能。下面从三个关键角度解析其代码生成能力。范围适…...

VGG‘文艺复兴’背后的思考:从RepVGG看AI模型设计的‘简’与‘繁’哲学

VGG式架构的当代启示&#xff1a;当模型设计遇见"大道至简"的智慧 在深度学习模型架构的演进历程中&#xff0c;我们见证了一场耐人寻味的"轮回"——从早期VGG的极简主义&#xff0c;到Inception、ResNet等复杂多分支结构的盛行&#xff0c;再到如今RepVGG…...

BetterGI完整指南:原神自动化助手的功能解析与使用教程

BetterGI完整指南&#xff1a;原神自动化助手的功能解析与使用教程 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools Fo…...

24小时运行OpenClaw:nanobot镜像监控网站变更并邮件报警

24小时运行OpenClaw&#xff1a;nanobot镜像监控网站变更并邮件报警 1. 为什么需要自动化网站监控 上周我负责的一个项目突然出了状况——客户官网的产品价格页面被意外修改&#xff0c;导致大量用户投诉。团队花了整整两天才发现问题根源。这件事让我意识到&#xff0c;对于…...

springboot-vue+nodejs大学生社团管理系统

目录技术栈选择系统模块划分开发阶段安排部署与优化测试重点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术栈选择 后端采用Spring Boot框架&#xff0c;提供RESTful API接口&#xff0c;处理业务逻辑与数据库交互。 前端…...

Claude Code进阶实战:构建MCP驱动的多Agent协同开发流水线

1. 理解MCP驱动的多Agent协同开发 在传统软件开发中&#xff0c;一个工程师往往需要同时承担需求分析、UI设计、编码实现和测试验证等多个角色。这种"全栈式"工作模式虽然灵活&#xff0c;但随着项目复杂度提升&#xff0c;很容易出现专业深度不足、效率下降的问题。…...

基于matlab的简单数字验证码识别系统 【验证码识别】计算机视觉,数字图像处理,含GUI界面...

基于matlab的简单数字验证码识别系统 【验证码识别】计算机视觉&#xff0c;数字图像处理&#xff0c;含GUI界面。 步骤&#xff1a;图像降噪&#xff0c;二值化&#xff0c;定位数字&#xff0c;分割合并&#xff0c;字符识别。 功能&#xff1a;可识别简单的数字验证码图片&a…...

OpenClaw异常处理机制:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF任务失败自动恢复

OpenClaw异常处理机制&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF任务失败自动恢复 1. 为什么需要异常处理机制 上周我让OpenClaw执行一个简单的数据整理任务——把散落在十几个Markdown文件里的技术笔记按主题分类归档。本以为是个轻量级操作&#xf…...