自定义枚举类型的常用操作-附源码(xjl456852原创)
自定义枚举类型中,假如我们有name和desc这样的属性,并在这个基础上定义了多个对象.
package com.xjl456852.myenum;/*** Created by xiejianglei on 2017/1/9.*/public interface TestEnum {String code();String desc();//这个方法是子类枚举类型自带的方法,子类无需实现,也无法实现String name();//这个方法是子类枚举类型自带的方法,子类无需实现,也无法实现int ordinal();}
package com.xjl456852.myenum;/*** Created by xiejianglei on 2017/1/9.*/public enum TestSubEnum implements TestEnum {MALE("1","man"),FEMALE("2", "woman");private final String code;private final String desc;TestSubEnum(String code, String desc) {this.code = code;this.desc = desc;}@Overridepublic String code() {return this.code;}@Overridepublic String desc() {return this.desc;}- }
package com.xjl456852.myenum;/*** Created by xiejianglei on 2017/1/9.*/public class Util {/*** 通过code获取desc* @param code* @param type* @param <T>* @return*/public static <T>String getDescByCode(String code, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.code().equalsIgnoreCase(code)) {return constant.desc();}}}return null;}/*** 通过desc获取code* @param name* @param type* @param <T>* @return*/public static <T>String getCodeByDesc(String name, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.desc().equalsIgnoreCase(name)) {return constant.code();}}}return null;}/*** 通过desc获取对应EnumName对象的名称* @param name* @param type* @param <T>* @return*/public static <T>String getEnumNameByDesc(String name, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.desc().equalsIgnoreCase(name)) {return constant.name();}}}return null;}/*** 通过code获取对应EnumName对象的名称* @param code* @param type* @param <T>* @return*/public static <T>String getEnumNameByCode(String code, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.code().equalsIgnoreCase(code)) {return constant.name();}}}return null;}/*** 通过code或desc获取对应EnumName对象的名称* @param any* @param type* @param <T>* @return*/public static <T>TestEnum getEnumTypeByAny(String any, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.code().equalsIgnoreCase(any) || constant.desc().equalsIgnoreCase(any)) {return constant;}}}return null;}/*** 通过EnumName对象的名称,获取对应的枚举对象* @param enumName* @param type* @param <T>* @return*/public static <T>TestEnum getEnumTypeByEnumName(String enumName, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){//也可以使用constant.toString()替代constant.name()if (constant.name().equalsIgnoreCase(enumName)) {return constant;}}}return null;}/*** 通过code或desc获取对应ordinal值* @param any* @param type* @param <T>* @return*/public static <T>int getOrdinalByAny(String any, Class<T>type) {if (type.isEnum()) {for (TestEnum constant : (TestEnum[])type.getEnumConstants()){if (constant.code().equalsIgnoreCase(any) || constant.desc().equalsIgnoreCase(any)) {return constant.ordinal();}}}return -1;}}
package com.xjl456852.myenum;import static com.xjl456852.myenum.Util.*;/*** Created by xiejianglei on 2017/1/9.*/public class TestMain {public static void main(String args[]) {String code = "1";String desc = "man";String enumName = "MALE";//通过枚举类型自带方法获取枚举类型的名字System.out.println(TestSubEnum.MALE.name());//通过自定义枚举类型的code,获取枚举类型的descSystem.out.println(getDescByCode(code, TestSubEnum.class));//通过自定义枚举类型的desc,获取枚举类型的codeSystem.out.println(getCodeByDesc(desc, TestSubEnum.class));//通过自定义枚举类型的code,获取枚举类型的名字System.out.println(getEnumNameByCode(code, TestSubEnum.class));//通过自定义枚举类型的desc,获取枚举类型的名字System.out.println(getEnumNameByDesc(desc, TestSubEnum.class));//通过自定义枚举类型的code或desc,获取枚举类型对象System.out.println(getEnumTypeByAny(code, TestSubEnum.class));//通过自定义枚举类型的code或desc,获取枚举类型对象System.out.println(getEnumTypeByAny(desc, TestSubEnum.class));//通过自定义枚举类型的code或desc,获取枚举类型的ordinalSystem.out.println(getOrdinalByAny(code, TestSubEnum.class));//通过自定义枚举类型的对象名称,获取对应枚举类型的对象System.out.println(getEnumTypeByEnumName(enumName, TestSubEnum.class));}}
自定义枚举类型的常用操作-附源码(xjl456852原创)的更多相关文章
- C#枚举类型的常用操作总结
枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueTy ...
- ElasticSearch+Kibana 索引操作( 附源码)
一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastics ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...
- swfupload多文件上传[附源码]
swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
随机推荐
- DBMS_STATS常用方法(收集oracle信息)
–收集数据库信息EXEC DBMS_STATS.gather_database_stats;EXEC DBMS_STATS.gather_database_stats(estimate_percent ...
- vipw和vigr命令
Modifying the Configuration Files To add user accounts, it suffices that one line is added to /etc/p ...
- 【转】node-webkit:开发桌面+WEB混合型应用的神器
顾名思义,node-webkit就是nodejs+webkit. 这样做的好处显而易见,核心奥义在于,用nodejs来进行本地化调用,用webkit来解析和执行HTML+JS. 快速上手 下载node ...
- JAVA小项目之五子棋
五子棋V1.0 功能: 人人对战,人机对战(初级) 记录双方分数: 主要知识点: 二维坐标系中,各方向坐标的关系及规律. 效果图: 主框架类: package com.gxlee.wzq; /** * ...
- (转)Repeater在无数据记录时显示暂无数据
方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate> <asp: ...
- (转)javascript中return的作用
这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...
- 日期 bootsrtap-datatimepicker and bootstrap-datepicker 控件支持中文
引用 bootsrtap-datatimepicker and bootstrap-datepicker 控件,发现官方控件不支持中文 1,bootstrap-datepicker - >解决方 ...
- vsftp的设置选项
设置匿名用户上传的文件的权限: anon_umask= 匿名用户新增文件的umask 数值.默认值为077. VSFTPD的设置选项 VSFTPD的配置文件/etc/vsftpd/vsftp ...
- JavaScript 客户端JavaScript之 脚本化浏览器窗口
1.计时器 客户端Javascript以全局函数setTimeOut().clearTimeOut().setInterval().clearInterval()提供这一功能. 前者是从运行的那一 ...
- mysql死锁--源于外键关联
死锁 存在于行级锁 存在的条件 1.资源只能同时被一个线程占有 2.资源占有不能被强制剥夺 3.请求和保持占有(在请求占有资源的同时能保持现有资源的占有) 4.死循环(一般做程序的人最关注的点) 一到 ...