在映射表中使用enum枚举

Excel VBA 枚举 常量列表对应的数字 Excel VBA 常用枚举常量列表对应的数字,可以帮助开发者更快更准确更高效的EXCEL开发与实例。是非常有价值的文档。希望对你有用。 立即下载

最近,公司安排我去参与重构一个ODN项目,其中有一条要求是把现有的仅支持单一公司Box的代码提升为支持多厂家,经过讨论组合指令采用了策略,进行了抽取优化,但是对单一指令却无法抽取,因为各个厂家的数据体不同,相同指令要求的参数也不同,这给我们带来了很大的苦恼。我经过仔细分析业务流程,发现不论哪一个厂家的指令,最简单的情况是命令直接是固定的,最复杂的情况是,本次的命令需要上面好几个命令的结果,这既是多厂家适配的难处却也是解决的问题最恰当的切入点,我是这样考虑的:不管哪个厂家,指令之间即使有关联,如果我们把每次发送命令的结果储存到公共的区域中,而且相同的命令是会覆盖之前的命令结果,这样每个厂家拿着自己的key必定能正确找到发起命令所需的数据

关于这个映射表,我也想过使用json文件的形式进行配置,但是考虑到需要进行Gosn解析,不适合在代码中直接引用,故考虑使用enum枚举类型。
1. enum枚举简单使用
enum枚举的引入,就是为了方便处理如一年12月,一周7天等这类有固定范围的数据,如下就是一个简单的enum类:

public enum Layout{
    TOP,BUTTOM,LEFT,RIGHT
}

引入了enum的java的列举的编写方便了许多,只须定义一个enum型的对象.enum对象的值都会自动获得一个数字值,从0开始,依次递增。
2. enum的常用方法

  • values()
    用来遍历enum中的值,如果采用Layout.values()方法,就可以遍历出TOP,BUTTOM,LEFT,RIGHT
    这四个值
  • ordinal()
    这个方法是给TOP等这样的enum值调用的,用来获来该值的定义的位置即索引值

3.enum的属性调用:
enum属性在调用处,通常情况下使用的是Enum名.Enum值访问,但是有一个地方需要注意,当在switch中使用enum时,不需要使用Enum名.Enum值形式,只需要Enum值即可。

4.为Enums添加属性和方法:
enums也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样。就是这么的简单.但是有一点是需要注意的,那就是enums的值列表必须紧跟在enum声明,不然编译时将会出错,类似下面的形式:

READ_PORTS_INFO(new char[]{0x1105, 0x11A5, 0x0000}),

5.Enums构造函数:
当使用上述形式强制为每个enum值设置值时,则必须创建这样的构造方法,来进行赋值,如下所示:

/**
 * 用于替换命令码的映射表,Value采用行标在前,自定义命令在后(厂商依次为:行标,太平,华脉...)
 */
public enum MappingTable {
    /**
     * 特殊命令,box随时有可能直接发给客户端
     */
    ALERT(new char[]{0x0000, 0x5A11, 0x0000});

    private final char[] value;

    char[] getValue() {
        return value;
    }

    MappingTable(char[] value) {
        this.value = value;
    }
}
Abaqus 2023 保姆级安装避坑指南:从环境变量到许可证配置,一次搞定 本文提供Abaqus 2023的详细安装指南,涵盖环境变量设置、许可证配置等关键步骤,帮助用户避开常见安装陷阱。通过系统环境检查、目录结构规划、许可证服务器安装及Java环境配置等实用技巧,确保顺利完成安装并优化软件性能。 阅读详情

相关推荐

手势控制 Python !Leap Motion Python 开发教程 (二)

手势控制 Python !Leap Motion Python 开发教程 (二) 现在进入正题,我来给大家总结一下我在使用 Leap Motion 开发过程中的经验以及学到的东西,其中我会概括以及翻译官方给出的注释,为了让这些注释更加通俗易懂,让大家更好理解。 回顾 在上一篇文章中我们讲了如何配置 Leap Motion 的 Python 2.7 的开发环境,如果您还没有配置好您的开发环境,可以参...

成畅的博客 3193

映射枚举

Hibernate对枚举类型映射类EnumType对id的支持问题 1、映射 <property name="type"> <column name="SALECHANNELTYPEID" /> <type name="org.hibernate.type.EnumType"> <param name="enumCla

asd8313123的博客 375

流形优化: Manifold Optimization 的 全网最通俗版本详解 (一)

前言 之前忙于论文, 停更了很久。 接下来的一段时间,出于各种原因, 决定在优快云平台上做 最近在 混合波束成形 及 智能反射面 领域 非常常见的流形优化 (Manifold Optimization) 算法 的专题介绍。尽管目前已有了不少的中文博客, 但出于其各种弊端, 使得本篇的成文仍有其不可或缺的意义。 而如果要盘点最核心的意义, 就在于这篇是对读者的 数学能力 与 阅读理解能力 要求最低的 流形优化讲解了。 唯一参考的文献为 Manopt 工具包作者 Boumal 的 新书: An introd

B417科研笔记 2万+

【Java 枚举 & 集合】枚举类Enum、映射EnumMap、集EnumSet

Java的枚举本质上是一个特殊的类,它可以通过 enum 关键字定义。EnumMap是专门为枚举类型量身定做的Map实现。EnumSet 是一个枚举类型元素集的高效实现。

茶色喵的博客 8783

​​EMC设计实战:BCI(大电流注入)硬件设计规范

LIN接口:集成TVS管(如PESD5V0S1BL)与共模电感,耐压等级≥20V(8kV HBM)。输入滤波:10μF电解电容(100kHz截止)+ 0.1μF陶瓷电容(10MHz截止)。​:全频段(1MHz-400MHz)注入200mA电流,LIN通信误码率<0.01%。对敏感电路(如传感器)采用隔离电源(如ADuM5000),隔离电压≥3kVrms。​:连续波(CW)与调幅波(AM,调制深度80%)组合,覆盖全频段干扰场景。​:选择低频段(1-100MHz)感量≥100μH的绕线电感,抑制共模电流。

m0_50833886的博客 1937

华为云计算——FusionCompute创建虚拟机

华为云计算——FusionCompute创建虚拟机

jks212454的博客 3676

枚举集与枚举映射表

EnumSet是一个枚举类型元素集的高效实现。由于枚举类型只有有限个实例,所以EnumSet内部用位序列实现。如果对应的值在集中,则相应的位被置为1。 EnumSet类没有公共的构造器。可以使用静态工厂方法构造这个集:enum Weekday{MonDay,TuesDay,WenesDay,ThursDay,FriDay,SaturDay,SunDay};EnumSet<Weekday> enum

u014322541的博客 924

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1138

Hibernate中枚举Enum类型的映射策略

在Java中`Enum`是一种“奇葩”的存在,“奇葩”不代表没用,对于这种比较特殊的存在,hibernate会有很多种选择来完成Enum类型字段的映射,首先要说明的是在hibernate都是把`Enum`类型的字段映射成基本类型的字段,并且我这里不使用任何配置文件来配置映射,而是统一使用注解这种方式来完成映射。

lmy86263的博客 2万+

基于STM32的太阳能充电宝设计_资料编号31

系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。

嵌入式阿齐Archie 1万+

文章ACCEPT之后填写内容教程-Springer-Verlag即施普林格

1. 确认corresponding author通讯作者机构是否正确(最好细分到系,如搜不到系只填大学也可)这些信息因为在投稿的时候都填过,所以一般都没问题,可确认并继续。2. Co-Author: 这篇文章有没有其他作者,如果有就选yes,并确认投稿时所填的作者姓名和机构是否正确。这个也是如果前期都填对了就不用修改。3. Research funders: 问文章的研究有没有资助,没有就选no,有就选yes,并填写机构名称和grant/contact numbers。

ZhangJiqun&191cm&85kg 4786

策略枚举的用法二:数据状态映射

策略枚举的用法二:数据映射说明数据映射 说明 本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。 数据映射 在开发过程中,难免会遇到与其他系统的对接,或者产品设计,或者其他种种原因导致 本身的枚举与其他枚举之间需要做一个映射,达到两个字段或者系统的同步,又方便维护一目了然。 例如: 如上,可以有三个枚举类 package com.strategy.btwo.enums; ...

chenahong0201的博客 732

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2171

mysql emum设置_如何解决mysql enum 类型字段的插入问题

用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号与MyCat的类似分片算法对比中间件DBLEMyCat分片算法种类 enum 分区算法 分片枚举两种中间件的枚举分片算法使用上无差别。开发注意...

weixin_36444661的博客 335

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java 语言中 Enum 类型的使用介绍

全文摘取至:https://www.ibm.com/developerworks/cn/java/j-lo-enum/ 感觉不错。和大家一起分享下 Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型...

TZB10000的博客 191

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

探秘 Magic Enum:为 C++ 带来的枚举魔法

在编程世界中,C++ 的枚举(`enum`)是一种常见且实用的数据类型。然而,它的一些功能相对有限,尤其是在与现代编程实践结合时。 是一个开源库,旨在扩展 C++ 枚举的边界,为开发者提供更丰富的操作和便利性。 ## 技术分析 Magic Enum 库基于 C++17 标准,利用模板元编程技术,实现了对枚举类型的静态反射。其核心功能包括: 1. **枚举值到字符串的转换**:能够将枚举值转化...

gitblog_00051的博客 1180

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

终极指南:如何用Magic Enum实现现代C++枚举反射

Magic Enum是一个神奇的C++17头文件库,为现代C++提供了强大的枚举反射功能。无论你是C++新手还是资深开发者,这个库都能让你摆脱繁琐的宏代码,轻松实现枚举值的字符串转换、遍历和类型检查。🎯 ## 什么是枚举反射?为什么需要它? 在传统C++开发中,处理枚举类型往往需要编写大量的重复代码。比如将一个枚举值转换为字符串,通常需要定义一个映射表: ```cpp enum class

gitblog_00566的博客 352

Java枚举类Enum的使用建议与MessageFormat的用法说明

在日常编码中少不了使用枚举类,可以避免大量的魔法值和重复使用的问题。 但是过多的枚举类也会导致查找起来的麻烦。因此个人建议使用内部类的方式,将大量的枚举都可以写在一个Class中,很爽,用过都说好。 本文提供一些简单的枚举类的使用代码范例。话不多说,先上代码。 import lombok.AllArgsConstructor; import lombok.Getter; import java.util.function.Function; import java.util.stream.Collector

qq_25720801的博客 1261

java中枚举类型enum的使用和分析

在c语言中我们经常使用enum枚举类型,在java中,我们很少使用

lichao_ustc的专栏 676

C++编程实践——magic_enum的应用

文章摘要:本文介绍了枚举反射的应用场景及其局限性,重点推荐了magic_enum开源库的使用。该库通过反射实现枚举值与名称的自动映射,避免了手动维护映射表的问题。文章详细说明了magic_enum的使用方法、环境检测、应用限制(如枚举值范围、别名问题、编译器支持等)以及解决方案,并提供了示例代码。最后强调开发者应善于利用第三方库来提高开发效率,实现学以致用。全文约150字。

fpcc的专栏 986

PostgreSQL枚举还是字符串:ENUM vs VARCHAR + CHECK 的权衡

摘要:PostgreSQL中ENUM和VARCHAR+CHECK两种存储枚举方式的本质区别在于存储效率与修改灵活性的权衡。ENUM底层使用4字节整数指针,节省存储空间且查询更快,但修改需要独立事务且无法删除值;VARCHAR+CHECK存储完整字符串,修改灵活但占用空间大且查询较慢。决策时需考虑状态数量、修改频率和业务场景:稳定核心状态(如订单状态)适合ENUM,频繁变更的标签系统则适合VARCHAR+CHECK。混合方案(核心用ENUM+扩展用JSONB)可兼顾两者优势。

goodparty的专栏 1179

enum 枚举使用

  enum 枚举的使用 import com.google.gson.annotations.SerializedName; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * Created by tkzc on 2016/12/14. */ public enum ...

天空之城的博客 429

java 1.8 enum_jdk1.8使用枚举类

package com.mq;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public enum ChannelEnum {WEBB("15","威客巴巴"),CMM("19","菜嬷嬷");private String channelCode;private String channelName;Ch...

weixin_39636226的博客 924

Magic Enum终极指南:10个实用示例彻底掌握枚举反射

在现代C++开发中,枚举反射是一个常见但棘手的挑战。Magic Enum库通过静态反射技术,为开发者提供了一套简洁而强大的解决方案。💫 这个头文件库无需任何宏或模板代码,就能让枚举类型实现字符串转换、迭代遍历等高级功能。 ## 🎯 为什么选择Magic Enum? 传统的枚举处理需要手动维护字符串映射表,既繁琐又容易出错。Magic Enum利用C++17的现代特性,为枚举类型提供了开箱即

gitblog_00265的博客 437
上一篇: 代码维护之反射篇
下一篇: ActionBar,曾经的导航栏
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值