



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EnumUtils重构及自定^@EnumValue注解自动校验枚举值EnumUtils主要功能介绍该简单介绍可看笔者之前文章但以上该方式存在一些问题,例如枚举值(value)可能为String也可能为Byte等等,不止只是Integer类型,而且有些枚举可能不需要枚举名称(name)属性,只需要个枚举值value属性即可,以上最简单的实现方式就不支持这些需求了,故通过拆分BaseEnum接口以及增加泛型来支持该要求。具体实现BaseEnum接口拆分为ValueEnum以及NameValueEnum接口ValueEnum接口定义***最简单的枚举类,即只含value的枚举(实现此接口可使用{@linkmayfly.core.util.EnumUtils}中的方法)@authormeilin.huang@version1.0@date2019-04-2210:10*/publicinterfaceValueEnum<T>{/***获取枚举值*@return枚举值*/TgetValue();NameValueEnum接口定义*带有枚举值以及枚举名称的枚举接口(可使用{@linkmayfly.core.util.EnumUtils}中的方法)@authormeilin.huang@version1.0@date2019-03-2211:04AM*/publicinterfaceNameValueEnum<T>extendsValueEnum<T>{/***获取枚举名称*@return枚举名*/StringgetName();EnumUtils重构II/***枚举常用工具类。<br/>*使用该枚举工具类需要指定的枚举实现{@linkValueEnum}OR{@linkNameValueEnum}接口@authormeilin.huang@version1.0@date2019-03-2211:12AM*/publicfinalclassEnumUtils{/***判断枚举值是否存在于指定枚举数组中@paramenums枚举数组@paramvalue枚举值@return*/publicstatic<T>booleanisExist(ValueEnum<T>[]enums,Tvalue){if(value==null){returnfalse;}for(ValueEnum<T>e:enums){if(value.equals(e.getValue())){returntrue;}}returnfalse;}/***根据枚举值获取其对应的名字@paramenums枚举歹I」表@paramvalue枚举值@return枚举名称*/publicstatic<T>StringgetNameByValue(NameValueEnum<T>[]enums,Tvalue){if(value==null){return"";}for(NameValueEnume:enums){if(value.equals(e.getValue())){returne.getName();}}return"";}/***根据枚举名称获取对应的枚举值@paramenums枚举歹I」表@paramname枚举名@return枚举值*/publicstatic<T>TgetValueByName(NameValueEnum<T>[]enums,Stringname){if(StringUtils.isEmpty(name)){returnnull;}for(NameValueEnum<T>e:enums){if(name.equals(e.getName())){returne.getValue();}}returnnull;}II自定义nal注解对入参进行自动校验IIII通过hibernatevalidator自定义参数校验注解方式实现对入参为枚举类型的参数进行校验/***枚举值校验,即值只能是指定枚举类中的值@authormeilin.huang@version1.0@date2019-06-1910:32AM*/I@Target({ElementType.FIELD})pRetention(RetentionPolicy.RUNTIME)^DocumentedDConstraint(validatedBy=EnumValue.ValueEnumValidator.class)ublic@interfaceEnumValue{/***错误提示*/Stringmessage()default"枚举值错误";/***必须的属性*用于分组校验*/Class<?>[]groups()default{};Class<?extendsPayload>[]payload()default{};/***枚举类(必须实现{@linkEnumValue}接口的枚举)*/Class<?extendsEnum<?extendsEnumValue>>enumClass();classValueEnumValidatorimplementsConstraintValidatorvValueEnum,Object〉{privateClass<?extendsEnum<?extendsEnumValue>>enumClass;@Overridepublicvoidinitialize(ValueEnumvalueEnum){this.enumClass=valueEnum.enumClass();}@OverridepublicbooleanisValid(Objectvalue,ConstraintValidatorContextcontext){if(value==null){returntrue;}//转换为ValueEnum接口Enum<?extendsEnumValue>[]enums=enumClass.getEnumConstants();EnumValue[]enumValues=newEnumValue[enums.length];for(inti=0;i<enums.length;i++){enumValues[i]=(EnumValue)enums[i];}returnEnumUtils.isExist(enumValues,value)}}使用:enumStringEnumimplementsValueEnum<String>{S1("01"),S2("02");privateStringvalue;StringEnum(Stringvalue){this.value=value;publicStringgetValue(){returnthis.value;—Enumim_11(1),12(2);privateIntegervalue;IntegerEnum(Integervalue){this.value=value;publicIntegergetV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小说情节结构分析试题及答案
- 高职单招职业技能测试题库
- 高职单招语文文学常识篇三
- (高清版)DB12∕T 642-2016 天津市行政许可事项操作规程 举办大型群众性活动安全许可-举办大型群众性活动安全许可
- 个人发展与2024年CPMM的试题及答案
- 感恩演讲稿-感恩老师
- 2025年活动合同模版
- 专升本思政理论的试题及答案检验
- 2025年度智能家居环保住宅商品房预售资金监管与智慧社区服务合同
- 二零二五年度特色小吃餐饮承包经营协议
- 《水土保持工程学》淤地坝设计教学课件
- 2023高性能工业PON白皮书
- 供应链管理培训教材
- 加油站投资概算表
- 《保险转介绍新解》
- 货位编码和储位管理知识PPT仓库货区的布置与编码方法
- DB13T 5186-2020桥梁预应力孔道压浆密实度无损检测技术规程
- 产品质量事故罚款单
- 质量体系推行计划表
- 《怎么都快乐》教学设计“十市联赛”一等奖
- 2023年全国10月00054自考管理学原理试卷真题
评论
0/150
提交评论