自定义枚举类型的常用操作-附源码(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 ...
随机推荐
- tortoisegit 保存用户名密码
方法一当你配置好git后,在C:\Documents and Settings\Administrator\ 目录下有一个 .gitconfig 的文件,里面会有你先前配好的name 和email,只 ...
- 监听视图树 OnGlobalLayoutListener
背景 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们写一个控件 public class MyImageView extends ImageView ...
- OD: Heap Overflow (XP SP2 - 2003) & DWORD SHOOT via Chunk Resize
微软在堆中也增加了一些安全校验操作,使得原本是不容易的堆溢出变得困难重重: * PEB Random:在 Windows XP SP2 之后,微软不再使用固定的 PEB 基址 0x7FFDF000,而 ...
- HTML5 microdata
schema.org 测试地址 http://www.google.com/webmasters/tools/richsnippets
- 网络编程 socket-实例
1.设计界面: 2.效果界面: 3.具体实现代码: public partial class frmMain : Form { public frmMain() { InitializeC ...
- WPF Mahapps.Metro 设置主题样式
/// <summary> /// 设置App样式 /// </summary> /// <param name="accentName">窗口 ...
- javascript 广告移动特效
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 关于js闭包杂记
闭包:一个函数oneF里return了另一个函数innerF,然后在oneF外面运行了函数innerF,如果innerF里有用到在oneF里定义的变量,则此时依然可以引用到, 但是变量值不是定义函数i ...
- 逆天的IE7中,诡异的横向滚动条
今天老邹我又要吐槽IE7了,这个奇葩浏览器总是不让省心.这回遇到的问题,灰常难发现是怎么回事,不过还是让我发现原因,哈哈,只要原因去干掉这个问题比躲避问题用别的办法绕开要爽的多啊. 首先我还是介绍下, ...
- mysql时间int日期转换
select from_unixtime(1350437720);select unix_timestamp(now());插入用 unix_timestamp(date)查询用from_unixti ...