接口:
public interface IPersistentEnum<T> {
T getKey();
String getValue();
}
工具类:
public final class PersistentEnum {
/**
*
* @param <T>
* @param <V>
* @param clazz
* @param value
* @return
*/
public static <T extends Enum<T> & IPersistentEnum<V>, V> T parse(Class<T> clazz, V key) {
for (T t : clazz.getEnumConstants()) {
if (isEquals(t.getKey(), key)) {
return t;
}
}
return null;
}
private static <T> boolean isEquals(T lhs, T rhs) {
if (lhs == null && rhs == null) {
return true;
} else if (lhs == null || rhs == null) {
return false;
} else {
return lhs.equals(rhs);
}
}
}
Enum example:
public enum ESex implements IPersistentEnum<Integer> {
MEN(1,"男"),WOMAN(0,"女");
private int key;
private String value = null;
private ESex(Integer key, String value) {
this.key = key;
this.value = value;
}
@Override
public String getValue() {
return value;
}
@Override
public Integer getKey() {
return key;
}
public static ESex parse(int key) {
return PersistentEnum.parse(ESex.class, key);
}
}
Test:
public class ESexTest {
/**
* @param args
*/
public static void main(String[] args) {
String sex1 = PersistentEnum.parse(ESex.class, 1).getValue();
System.out.println(sex1);
//如果枚举里写了parse静态方法可以直接使用
String sex2 = ESex.parse(1).getValue();
System.out.println(sex2);
}
}
输出结果:
男
男
分享到:
相关推荐
一个简单方便的轮播图组件,基于viewpager 基础上进行的封装。 可设置 项目中图片,网络图片, View; 支持循环自动播放,手势滑动切换,item点击事件,可设置 点点的样式宽高、颜色、大小、位置 ; 可设置蒙层;可...
程序采用 C++ 语言编写,使用简单的面向对象方法封装了各个阶段: ·共计 6 个类:Lexer、Parser、Code、MIPS、Error、Table ·另有两个枚举类(Enum):symbol 和 kind ·另有两个结构:token 和 record ·另有三个...
已经封装成工具类,简单实用,耦合性低,并且包含多种动画效果,可自定义。 typedef NS_ENUM(NSInteger,LZBFocusScrollViewScrollStyle) { LZBFocusScrollViewScrollStyle_Defalut, //默认普通滚动 ...
39.6 使用简单工厂将创建对象代码单独的封装的好处? 64 39.7 使用常量优化工厂类 64 39.8 测试类 65 40 枚举(enum) 65 40.1 创建一个枚举 66 40.2 为枚举创建实例 66 40.3 如何使用枚举的实例 66 40.4 使用枚举...
IBNetworking 1.0.0 IBNetwork是一个受Moya启发的基于URLSession的框架,它具有一个网络抽象层,可以充分封装URLSession。 该框架还具有使用Core Data在磁盘上记录请求和响应的功能,对主线程的影响最小(线程安全)...
0027 使用enum定义类型 10 0028 定义只有零个元素的数组 11 0029 利用零进行初始化的对象 11 0030 初始化数组的简单方法 11 0031 结构体的字节对齐 11 1.3 模板与函数 12 0032 成员函数的模板不可以是...
13.1.1 简易需求分析 426 13.1.2 swing组件简介 427 13.1.3 设计主窗口与菜单列 429 13.1.4 关于版面管理 433 13.1.5 事件处理 436 13.2 文档打开、存储与编辑 442 13.2.1 操作打开文档 442 13.2.2 ...
public enum Singleton{ INSTANCE; } 5. 作用: 1. 全局配置文件 2. 全局日志文件 3. 节省资源,例如,回收站、资源管理器、游戏单开窗口 6. 使用选择: ...
此功能可以把任意多个参数的多元(成员/非成员)函数封装成一个无参数函数,作为简单的回调函数。 ☆ best callback function is non-parameter function. This feature packs multiple-parameter function into one...
RFC101 对1971年2月17日伊利诺斯州的Urbana的网络工作组会议的注释 RFC102 主机-主机 协议故障清除委员会的说明 RFC103 中断键的执行 RFC104 连接 191 RFC105 通过 UCSB 进行远程登录和远程输出返回的网络说明书 ...
enum COLOR { WHITE, BLACK = 100, RED, BLUE, GREEN = 300 }; 解: Blue = 102 2-7 注释有什么作用?C++中有哪几种注释的方法?他们之间有什么区别? 解: 注释在程序中的作用是对程序进行注解和说明,以...
Ole Begemann 在这篇帖子里提到了一种很好封装,这为我们如何借助柯里化,安全地改造和利用 target-action 提供了不少思路。 protocol TargetAction { func performAction() } struct TargetActionWrapper...
IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈...
IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈...
IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈...
IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈...
IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈...
12.1.5 项目示例:开发一个简单的WPF应用程序 424 12.2 WCF 427 12.2.1 SOA是什么 427 12.2.2 WCF是什么 428 12.2.3 WCF的优势是什么 428 12.2.4 WCF开发环境 431 12.2.5 项目示例:订票服务WCF开发步骤 431 12.3 ...