自定义枚举类型的常用操作-附源码(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 ...
随机推荐
- Java基础知识强化23:Java中数据类型转换(面试题)
1. 以下代码输出结果是( D ). public class Test { ...
- C#链接远程SQL 服务器方法
C#链接远程SQL 服务器方法第一步:申请花生壳内网版,要求交1块钱给花生壳服务器做验证.第二步:把你自己主机本地连接那里的内网地址不要自动获取,写成192.168.0.105,子网掩码255.25 ...
- FastReport 动态修改连接字符串
代码如下: Report rp = new Report(); rp.Load(@"Print\aa.frx"); rp.Dictionary.Connections[0].Con ...
- zookeeper集群的安装
顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象).Hive(蜜蜂).pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zook ...
- 电厂MIS,SIS简介
MIS(Management Information System)管理信息系统,主要指的是进行日常事务操作的系统,它使管理人员及时了解公司现状和各种消息,它是电力企业管理现代化的重要标志. 一个典型 ...
- AFNetworking 3.0的GET和POST的使用
POST: AFHTTPSessionManager *session = [AFHTTPSessionManager manager]; session.requestSerializer = [A ...
- QT学习篇:入门(1)
第一个为管理界面: (1)安全库存的设置,包括序号.物品代码.物品类型.最大库存量.最小库存量.最大库存比率.最小库存比率: (2)计算频率设置,包括:实时,定时(单位分为:分钟.小时.天),来自gl ...
- 安装beautifulsoup的奇怪问题
以前用的python2.7,改成3.4以后就重新下载了beatifulsoup4.解压到c:\Python34后.在cmd界面执行python setup.py install安装完成后.想看看安装成 ...
- html5 js跨域
介绍 当我们使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Acce ...
- 一个PHP常用表单验证类(基于正则)
一个基于正则表达式的PHP常用表单验证类,作者:欣然随风.这个表单判断类的功能有:验证是否为指定长度的字母/数字组合.验证是否为指定长度汉字.身 份证号码验证.是否是指定长度的数字.验证邮件地址.电话 ...