enum的一种应用
来源:互联网 发布:java中sleep的用法 编辑:程序博客网 时间:2024/06/06 03:02
功能:枚举类型有一种很给力的应用。如:最常见的审批流程(新建,审核中,审核通过)。在web开发时,页面显示的是审核中,审核通过这样的汉字。而数据库存储的往往是1(代表新建)这样的数字类型。这样做的好处是数据库存储方便,使用的空间小。然而为了增强代码的可读性,在实际代码中我们采用NEW,CHECKING,CHECKED这样的字段。Enum完美解决了这个问题。
例:
1.1实现类
public enum FlowStatus implements EnumPersistable<FlowStatus>{
NEW(1,"新建"),CHECKING(2,"审核中"),CHECKED(3,"审核通过");
private int val ;//存储
private String desc;//显示
private FlowStatus(int val,String desc) {
this.val = val;
this.desc=desc;
}
public String getDesc() {
return desc;
}
public Integer getVal(){
return val;
}
@Override
public FlowStatus getEnumVal(Integer val) {
switch(val) {
case 1:
return NEW;
case 2:
return CHECKING;
case 3:
return CHECKED;
}
return null;
}
@Override
public Integer getPersistVal() {
return this.val;
}
}
1.2接口:
public interface EnumPersistable<T extends Enum<?>> {
Integer getPersistVal() ;//获取val,存入数据库的数值
T getEnumVal(Integer val);//获取相对应的枚举类型,代码中应用的值
}
1.3Model类
@Table(name = "CONTRACT")
public class Contract implements Serializable {
private FlowStatus status; //合同状态
@Column(name="CONTRACT_STATUS")
@Type(type="XXX.XXX.EnumIntValPersistType",
parameters = {
@Parameter(name="enumName",value="XXX.XXX.FlowStatus")
})
public FlowStatus getStatus() {
return status;
}
public void setStatus(FlowStatus status) {
this.status = status;
}
}
1.4转换类
public class EnumIntValPersistType implements ParameterizedType,Serializable {
private Class<Enum<?>> enumName = null;
private Method mehodOfGetPersistVal = null;
private Method methodOfGetEnumVal = null;
@Override
public void setParameterValues(Properties pty) {
if(pty != null) {
try {
enumName = (Class<Enum<?>>) Class.forName(pty.getProperty("enumName ").toString());
enumObj = enumName .getEnumConstants()[0];
this.mehodOfGetPersistVal = enumName .getMethod("getPersistVal");
this.methodOfGetEnumVal = enumClz.getMethod("getEnumVal", new Class[]{Integer.class});
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
- enum的一种应用
- C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用
- java的enum应用
- Enum 的简单应用
- enum的高级应用
- 枚举enum的应用
- 枚举 enum的应用
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- enum 枚举的简单应用
- 枚举类enum的应用
- Enum(枚举类型)的应用
- SAX的一种应用
- 递归的一种应用
- 继承的一种应用
- Java中枚举类型Enum的一种使用方式
- [20150719]Null特性、sed的变量调用、锁死对象的处理,for in与echo的结合使用
- JAVA中设置全局变量的方法
- C/C++程序设计07(STL容器和泛型算法)
- PostgreSQL安装问题汇总
- 分段与分页
- enum的一种应用
- 九度OJ(字符串、位移操作、背包、递归、dp栈模拟、八皇后)
- 自定义泛形
- java网络编程
- HDU 1969
- Jackson 反序列化为List
- 离线看Android官方文档
- ios 自动布局库masonry的技巧分享1
- eclipse配置android开发环境