场景:有一个实体类User,有一个属性status,如果status未0代表正常,status为1代表无效,而我们在数据库中存储的是数值,但前段客户所看到的应该是字符串,此时就可以用到枚举(enum)。
public class User implements Serializable {
private static final long serialVersionUID = 5550303936960514419L;
/** id */
private Integer id; //set,get方法省略
/** 标题 */
private String userName;//set,get方法省略
/** 状态 */
private String status;//set,get方法省略
/*枚举*/
public static enum statusEnum{
//枚举类别
STATUS_ZHENGCHANG(0,"正常"),
STATUS_WUXIAO(1,"无效");
//成员变量
private final int type;
private final String desc;
//构造方法
statusEnum(int type,String desc){
this.type = type;
this.desc = desc;
}
//普通方法
public static String getDesc(int index){
for(statusEnum c : statusEnum.values()){
if(c.getType() == index){
return c.desc;
}
}
return null;
}
}
}
//get、set方法
public int getType () {
return type;
}
public String getDesc () {
return desc;
}
我们自己在User内部定义一个status的枚举类,来描述其状态值和说明,这里可以很直观的表现它们的关系。接着,我们从数据库中查出了User,将status属性通过相应的映射为字符串描述,如下:
User u = new User();
u.setStatus(User.statusEnum.getDesc(u.getStatus)); //status, 0: 正常 1:无效
System.out.println(u.getStatus); //输出为正常
这样就通过枚举类型,可以自定义的,并且很优美的进行开发工作。值得注意的是如上面的getDesc是我们自己写的,枚举类自己提供了一些操作本身元素的方法,如statusEnum.values就是返回所有的元素。