自定义枚举类型的常用操作-附源码(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基础知识强化80:Math类random()方法的小扩展(控制产生目的数字的概率)
1. Math.random()方法: Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9 那么如下 ...
- 4_Linux_文件压缩和解压指令
3.4压缩解压命令.gz .tar.gz .zip .bz2 1)gzip 仅压缩文件 gzip命令用于压缩文件,英文原意为GNU zip,所在路径/bin/gzip,其语法格式为: gzip [文件 ...
- codevs 2494 Vani和Cl2捉迷藏
/* 一开始大意了 以为和bzoj上的祭祀是一样的(毕竟样例都一样) 这里不知相邻的点可以相互到达 间接相连的也可以到达 所以floyed先建立一下关系 再跑最大独立集 下面贴一下95 和 100的代 ...
- Android ScrollView 嵌套 ListView、 ListView 嵌套ScrollView Scroll事件冲突解决办法
本人菜鸟一名,最近工作了,开始学习Android. 最近在做项目的时候,UX给了个design,大概就是下拉刷新的ListView中嵌套了ScrollView,而且还要在ScrollView中添加动画 ...
- Ubuntu11.10打开XDMCP,使用XManager远程管理
ubuntu11.10-desktop-i386.iso缺省安装使用lightdm作为缺省登录器,这里说说开启XDMCP进行远程登录 首先关闭防火墙 sudo ufw disables Ubuntu所 ...
- vim 学习笔记
vim介绍:一款编辑器,另外一般linux系统会自带,所以一般linux下日志.配置文件等 纯文本文件的修改编辑等通过vim操作 学会的好处:1 方便操作linux下日志.配置文件等纯文本文件 2 功 ...
- 002_系统表查询(sysdatabases等)
002_系统表查询(sysdatabases等) --1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name --2.获取所有表 ...
- ORACLE搭建Stream过程中报错【error收集】
错误一:在配置完源库和目标数据库后,创建复制管理员.连接上复制管理员后,在源库执行MAINTAIN_TABLE过程: declare v_tables DBMS_UTILITY.UNCL_ARRAY; ...
- java第一天的疑问
1字节 的 byte 2字节 的 char 精度 byte<short<char<int<long<float<double 随便打个整数默认为int 随便打个小数 ...
- [java] Java NIO 学习笔记 I
如今在运行时优化方面,JVM 已然前进了一大步.现在 JVM 运行字节码的速率已经接近本地 编译代码,借助动态运行时优化,其表现甚至还有所超越.这就意味着,多数 Java 应用程序已不 再受 CPU ...