自定义枚举类型的常用操作-附源码(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数据库连接之配置ODBC数据源
java使用JDBC-ODBC桥接连接SQLServer数据库需要配置ODBC数据源,配置步骤如下: 1.进入控制面板,找到管理工具 2.看到ODBC数据源,有64位和32位的,如果你的数据库是64位 ...
- Linux命令之进程的管理
1.进程介绍 进程的分类: 进程一般分为交互进程.批处理进程和守护进程三类. 守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或由超级管理用户root来启动.比如在 ...
- C# Byte[]数组读取和写入文件
这个项目我用的是asp.net构建的,代码如下 protected void ByteToString_Click(object sender, EventArgs e) { string conte ...
- linux jdk,java ee ,tomcat 安装配置
1.把mypagekage.iso 挂载到linux操作系统中. 在VM做好配置,使用 mount /mnt/cdrom 2.把安装文件拷贝到/home cp 文件名 /home (快捷键tab) 3 ...
- DELL R410升级网卡驱动
官方链接http://zh-cn.broadcom.com/support/ethernet_nic/netxtremeii.php(官方驱动的名字偶尔会改) 注意确保服务器的kernel-dev ...
- ORACLE搭建Stream过程中报错【error收集】
错误一:在配置完源库和目标数据库后,创建复制管理员.连接上复制管理员后,在源库执行MAINTAIN_TABLE过程: declare v_tables DBMS_UTILITY.UNCL_ARRAY; ...
- ASP.NET页面传值与跳转
asp.net页面传值的五种方法:QueryString,Session,Application,Request.Cookies,Server.Transfer 其中Cookie和Server.Tra ...
- 关于asp.net会话阻塞
现象:在一个网站中,当访问一个处理比较耗时的页面(A页面),页面请求还没有返回时,此时再点击访问该网站的其他页面(B页面)会出现B页面很久都没有响应和返回,直到A页面输出返回数据时才开始处理B页面的请 ...
- 国内开源html5游戏引擎全收录
本文引自<国内开源html5游戏引擎全收录> 游戏开发这潭水太深,英文水平太差,不敢看国外的, 而且这几年国内技术水平也挺高了不少,特别是JS方面.(我个人感觉) 最近看了几个国产的js游 ...
- Java 的简单了解
本文是主要根据百度百科以网上一些资料,整理的一点对Java的浅显的了解,不当之处,还请大家批评指正. 最初见到Java这个单词,是在以前的手机上,游戏启动时总会显示java的图标和名字,就感觉java ...