Javascript1.8.5开始可以使用Object.freeze来冻结对象实现一个类似”枚举”类型。...Object.freeze(DaysEnum) 这就是js中的”枚举”!是不是很简单? 不过现在是2019年了,我们还可以使用const来定义对象。
Contents 1 如何优雅地在JS中使用枚举 1.1 为什么使用枚举 1.2 如何解释 1.3 关于 如何优雅地在JS中使用枚举 为什么使用枚举 去魔法数字 枚举语义化 定义一体化:枚举值和枚举描述写在了一起...==STATUS.WAIT || status === STATUS.ERROR){ console.log('statu',status) } 通过简单的改造,我们有了一种新的使用方式,事先定义一个对象...STATUS.WAIT]:'审核中', [STATUS.ERROR]:'审核失败' } 具体使用 STATUS_CONFIG[status] 但是这样就又面临一个新问题,每一个定义的值与描述都要分开重写...,这样造成大量的重复性工作 使用方便:无需额外的过滤器 我们自定义一个createEnum方法 /** * 枚举定义工具 * 示例: * const STATUS = createEnum({...:{STATUS.getDesc('AUDITING')} 关于 由于js没有枚举这一概念,借助JAVA思想,我们编写创建枚举方法 本文首发于:如何在JS中使用枚举定义
三、枚举类入门 先看一个简单的枚举类。...enumcase; public enum SeasonEnum { SPRING,SUMMER,FALL,WINTER; } enum和class、interface的地位一样 使用enum定义的枚举类默认继承了...使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。 枚举类的构造器只能是私有的。 四、枚举类介绍 枚举类内也可以定义属性和方法,可是是静态的和非静态的。...构造器需定义成私有的,这样就不能在别处申明此类的对象了。枚举类通常应该设计成不可变类,它的Field不应该被改变,这样会更安全,而且代码更加简洁。...与普通类一样,实现接口的时候需要实现接口中定义的所有方法,若没有完全实现,那这个枚举类就是抽象的,只是不需显式加上abstract修饰,系统化会默认加上。
但如果你能在具体的开发中,更优雅的定义枚举的话会让你的代码看起来清新脱俗,本文将介绍枚举的各种用法,特别后面的通过构造函数传参以后,让你在开发中,遇到枚举与int value之间切换时变得更优雅。...用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。...关于这个两个集合的使用就不在这里赘述,可以参考JDK文档 枚举和常量定义的区别 一、 通常定义常量方法 我们通常利用public final static方法定义的代码如下,分别用1表示红灯,3表示绿灯...枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。...@Override public String toString() { return String.valueOf(this.nCode); } } 四、 通常定义常量方法和枚举定义常量方法区别
文章目录 枚举类的使用 如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 方式二:jdk5.0,可以使用enum关键字定义枚举类 Enum类的主要方法 toString() values() valueOf...(String objName) 使用enum关键字定义的枚举类实现接口的 情况一:实现接口,在enum类中实现抽象方法 情况二:让枚举类的对象分别实现接口中的抽象方法 枚举类的使用 枚举类的理解:类的对象只有有限个...我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。...如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 //自定义枚举类 class Season{ //1.声明Season对象的属性:private final修饰 private final...使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类 枚举类的构造器只能使用 private 权限修饰符 枚举类的所有实例必须在枚举类中显式列出(, 用于分隔
枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。...在这里,还能更容易地看出枚举工作方式的另一个细节:我们所定义的每个枚举成员的名称也成为了一个用于构造枚举实例的函数。...有关联值的枚举定义类似于定义不同类型的结构体,不同之处在于枚举不使用 struct 关键字,并且所有成员都归类在 Message 类型下。如下这些结构体可以包含与之前枚举成员中相同的数据:#!...Message 枚举那样简单地定义一个函数来接收这些类型的消息,因为枚举是单独一个类型。...枚举和结构体之间还有一个相似之处:就像我们能够使用 impl 在结构体上定义方法一样,我们也能够在枚举上定义方法。
通过Restful接口返回的JSON数据默认是枚举的名字,但是使用自定义枚举时,一般统一使用自定义的code来代表。...所以需要自定义HttpMessageConverter CodedTypeTypeAdapter import com.google.gson.*; import com.utils.mybatis.CodedEnum...com.tenmao.web.mvc.support.HttpMessageConverter" /> 完成 实现上述步骤后,只要实现接口CodedEnum的自定义枚举都可以自动转换为其...code值 自定义枚举系列 自定义枚举 --- MyBatis字段映射 自定义枚举 --- Swagger文档展示
在其它两篇文章中,已经解决的自定义枚举在MyBatis以及Rest接口的转换,但是在Springfox中还存在问题,不能使用code来作为api。...本文通过扩展Springfox,实现了对自定义枚举的良好支持。 ps: 枚举的定义参见 自定义枚举 --- MyBatis字段映射 当前 ?...Springfox默认枚举 存在2个问题 类型显示为string,需要修改为integer 枚举的类型显示为枚举值,需要修改为枚举的code值(CodedEnum的定义请参见其他文章) 扩展后 ?...DocumentationType documentationType) { return true; } } ps: 这篇文章可能小众,但是原创性特别高,同类的网上资源特别少,建议收藏 自定义枚举系列...自定义枚举 --- MyBatis字段映射 自定义枚举 --- Gson转换 参考 Plugins Available For Extensibility springfox-swagger原理解析及使用过程中可能会遇到的坑
在和前端开发对接接口过程中经常发现需要一些枚举类的字典参数,虽然可以通过swagger在线文档给前端开发,不过可以直接返回枚举的编码和字典值就可以更直观,所以在项目里怎么实现?...可以通过Mybatis的一些接口,自定义枚举类的处理器实现 环境准备 开发环境 JDK 1.8 SpringBoot2.2.1 Maven 3.2+ 开发工具 IntelliJ IDEA smartGit...Navicat15 定义一个接口 先定义一个IEnum接口,@JsonFormat格式为对象返回 package com.example.springboot.mybatis.common.enumhandler...shape = JsonFormat.Shape.OBJECT) public interface IEnum { String getCode(); String getName(); } 枚举工具类...写一个枚举工具类,根据code和name返回对应枚举类,根据反射获取getEnumConstants,循环匹配 package com.example.springboot.mybatis.common.enumhandler
MyBatis自带的EnumTypeHandler转换为文字保存在数据库,EnumOrdinalTypeHandler使用的是序号,它们的一致性都可能被轻易地破坏,所以最好的办法是自定义一个int类型...自定义公共父接口 package com.tenmao.utils.mybatis; import java.util.Arrays; import java.util.Optional; public... 自定义枚举...getCode() { return code; } } ps: 参考资料写得特别好,我之所以重新写了一下,是资料写得有点啰嗦,比如子类的注册,其实都是自动的,不需要再额外配置 自定义枚举系列...自定义枚举 --- Gson转换 自定义枚举 --- Swagger文档展示 参考 如何在MyBatis中优雅的使用枚举
背景 在JS中并没有原生枚举的实现,可以通过下面几种方法来模拟类似的操作。...(Days.Mon)) // false console.log(isWeekend(Symbol('Sun'))) // false 得益于Symbol对象的唯一性,我们可以达到必须让别人使用我们定义的变量这一目的...JS定义枚举集合时的优化 可以尝试下列几种方法,只需要写出来枚举的名字,通过几个数组的API进行赋值操作。 但是由于是动态执行的,效率相对来说会降低,不过这通常是不足一提的。...字符串类型 和数字类型定义时差不多: const Days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'].reduce((pre, cur)...=> { return { ...pre, [cur]: cur } }, {}) 换汤不换药,和上面的数字类型定义时类似: const Days = ['Sun', 'Mon', 'Tue',
自定义枚举Validated校验注解 一、介绍 在以前的文章中,有解释使用过@Valid注解的使用 Valid注解使用及扩展 | 半月无霜 (banmoon.top) Validated分组校验及扩展...| 半月无霜 (banmoon.top) 本篇分享一个自定义校验注解,可以配合枚举使用,对入参的有效值进行校验。...比如说一些状态值,入参必须要符合定义的状态值 二、代码 注解 package com.banmoon.validator; import com.banmoon.business.enums.MyEnum...Retention(RetentionPolicy.RUNTIME) public @interface EnumValid { String message() default "不符合的枚举类型...import lombok.NoArgsConstructor; import java.util.List; import java.util.Set; @Data @ApiModel("验证自定义校验注解
01 自定义类型 通过用户自定义类型,简化了verilog代码量并实现更多功能;用户自定义类型使得代码的可读性更强; 通过typedef来创建用户自定义类型; 通过enmu来创建枚举类型; 通过struct...,ICer3.....ICerN} IC; Verilog语言不支持枚举类型,因此为了提供类似于枚举类型设计方式,我们不得不采用参数来表示可取值的范围,或者使用宏来定义各个合法值的宏名称。...定义枚举值 默认的枚举类型是int,即32位的二值逻辑数据类型; 为了更准确的描述变量,SV允许指明其数据类型,例如: enum bit {TRUE,FALSE} Boolean; enum logic...[1:0] {WAITE,LOAD,READY} state; 自定义枚举类型 如果枚举类型变量被赋值,那么所赋的值应在其数值范围。...{ON=1’b1,OFF=1’b z} out; 如果枚举类型并没有伴随着typedef,那么该枚举类型指的是匿名枚举类型;此时变量名应伴随其后; 将typedef与enum合并,可以将匿名枚举类型声明为自定义类型
文章目录 一、枚举类 二、枚举类定义函数 1、枚举类定义普通函数 2、枚举类定义构造函数 三、密封类 一、枚举类 ---- Kotlin 中使用 枚举类 定义常量 , 枚举类定义格式如下 : 枚举常量...枚举的 常量名称 ; MALE true 枚举的常量 Gender.MALE 是 Gender 类的一个 实例对象 ; 二、枚举类定义函数 ---- 在枚举类中 , 可以 定义函数 , 包括 普通函数...和 构造函数 ; 1、枚举类定义普通函数 通过 枚举类 的 类型常量 ( 实例对象 ) 可以 调用 枚举类中定义的方法 ; 为枚举类定义普通函数 : 在枚举类 Gender 中定义了 log 函数 ,...为枚举类定义构造函数后 , 每个枚举常量都要传入对应的构造函数参数 ; 为枚举类定义构造函数 : enum class Gender(var id: Int) { MALE(0), FEMALE...是一组 子类型 闭集 ; 密封类 可以 定义 枚举类型的 子类型闭集 , 一个密封类可以有多个子类 , 继承密封类的子类 必须 与 密封类在相同的 Kotlin 代码文件中 ; 密封类适用于这种情况
import org.junit.Test; public class lan { @Test public void tes...
前言 本文介绍自定义类型中的枚举 一、枚举 枚举,通俗来讲就是一一列举 要注意枚举的枚举常量是有限个数 例如,三原色:红黄蓝;性别:男、女、保密;…… 二、定义与声明 #define _CRT_SECURE_NO_WARNINGS...2.防止了命名污染(封装) 3.与define宏定义相比较: ①便于调试; 【用define定义的值不能调试,因为define是在程序预处理阶段就将代码进行改变了,而调试是在程序生成.exe可执行程序时才能进行调试...,因此不能对宏定义进行调试,而枚举可以被调试】 ②枚举类型由类型检查更加严谨(C语言中体现不多,但是C++会体现); 【只能拿枚举常量给枚举变量赋值才不会出现类型差异】 ③使用更方便,一次可以定义多个变量...,用define就得一个一个定义。...---- 总结 本文主要介绍了自定义类型中的结构体类型的相关知识,希望这篇文章对你理解结构体有所帮助。
比较常见的自定义类型主要分为3种:结构体、枚举、联合。 二、探窥自定义类型 1.结构体(struct) 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。..., SECRET }; enum Color//颜色 { RED, GREEN, BLUE }; 以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。...{ }中的内容是枚举类型的可能取值,也叫 枚举常量 。 这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。...我们可以使用 #define 定义常量,为什么非要使用枚举? 枚举的优点: 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符比较枚举有类型检查,更加严谨。 3....使用方便,一次可以定义多个常量 3.3 枚举的使用 enum Color//颜色 { RED=1, GREEN=2, BLUE=4 }; enum Color clr = GREEN;//只能拿枚举常量给枚举变量赋值
3.1 枚举类型的定义 其中列举的是可能的取值,默认开始为零,开始向下递增1,可以在定义的时候初始化 enum Day//星期 { Mon, Tues, Wed,...{}中的内容是枚举类型的可能取值,也叫 枚举常量 。 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。...定义常量,为什么非要使用枚举?...枚举的优点: 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符比较枚举有类型检查,更加严谨。 3. 便于调试 4....使用方便,一次可以定义多个常量 3.3 枚举的使用 enum Color//颜色 { RED = 1, GREEN = 2, BLUE = 4 }; enum
自定义类型:结构体,枚举,联合 1....枚举 3.1 枚举的使用: 3.2 枚举的优点: 4. 联合(共用体) 4.1 联合类型的定义 4.2 联合的特点 4.3 联合大小的计算 5. 总结: 1....Day//星期 { //枚举常量 Mon=1, Tues, Wed, Thur, Fri, Sat, Sun }; 3.2 枚举的优点: 为什么使用枚举?...枚举的优点: 增强代码的可读性和可维护性。 和#define定义的标识符比较枚举有类型检查,更加严谨。 防止命名污染(封装)。 使用方便,一次可以定义多个常量。 4....联合(共用体) 4.1 联合类型的定义 联合也是一种特殊的自定义类型。 这种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间(所以联合也叫共用体)。
领取专属 10元无门槛券
手把手带您无忧上云