一般情况下,如果系统中存在大量的状态常量值的话,比如表示季节的唯一标识code
,分别为SPRING, SUMMER, FALL, WINTER
,我们可以建立 一个字典表或者使用一个枚举类。
若存入数据库的字典表中,存入code
值和中文名称,定义存取的方法和接口。
若使用枚举类也需要code
和name
两个属性,在枚举类中可以定义获取全部枚举的方法。如:
import java.util.ArrayList;
import java.util.List;
public enum SeasonEnum {
SPRING("春天","SPRING"),
SUMMER("夏天","SUMMER"),
FALL("秋天","FALL"),
WINTER("冬天","WINTER");
private final String name;
private final String code;
private SeasonEnum(String name,String code)
{
this.name = name;
this.code=code;
}
public String getName() {
return name;
}
public String getCode() {
return code;
}
public List<EnumDO> getAll(){
List<EnumDO> enumDOS=new ArrayList<>();
for (SeasonEnum seasonEnum:SeasonEnum.values()){
EnumDO enumDO=new EnumDO();
enumDO.setCode(seasonEnum.getCode());
enumDO.setCode(seasonEnum.getCode());
enumDOS.add(enumDO);
}
return enumDOS;
}
}
既然这两种方法都可以使用,又有什么区别呢。
使用枚举类不需要查表,速度更快,但是状态常量值发生改变的话,需要改变枚举类中的代码,重新打包发布。若存在数据库中不需要改动代码,写sql增添查改就可以了。