您的位置 首页 java

你所不知道的JAVA枚举(Enum)的使用

枚举

枚举( Enum ),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。 JAVA 从JDK5开始,引入了对枚举的支持。在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。

以上是一种官方的说法,其实在实际使用的过程中,我们用到最多的就是常量和数据库字段中的字段内容解析。

实例

下面我们直接开始上代码

  1. 接口。

    定义统一的接口方便管理,所以枚举类都要实现该接口

public interface EnumStatus {

public int getValue();

public String getDesc();

}

2.枚举类。

当一个表的一个字段有多个状态时,为了方便管理和状态的一致性,可以使用 枚举类型

在线上数据使用过程当中一般不会使用delete去真正的删除一条数据库中的数据,都是进行逻辑删除。

例如:数据库award表的status代表逻辑删除字段。0代表已删除 。1代表正常。

当多人团队开发的过程当中,为了保持一致性,都可以在数据库中保存时候,使用。 EnumAwardStatus.DELETED.getValue 来代表0,已经删除。

public enum EnumAwardStatus implements EnumStatus {

NORMAL(1, “正常”),

DELETED(0, “已删除”);

private int value;

private String desc;

private EnumAwardStatus(int value , String desc) {

this.value = value;

this.desc = desc;

}

@Override

public int getValue() {

return value;

}

@Override

public String getDesc() {

return desc;

}

}

3.枚举类型的工具类

public final class EnumStatusUtils {

public static EnumStatus getStatusByValue(Class<?> enums, int value) {

if(enums.isEnum()) {

Object[] statuses = enums.getEnumConstants();

for(int i = 0; i < statuses.length; i++) {

EnumStatus status = (EnumStatus)statuses[i];

if(status.getValue() == value) {

return status;

}

}

}

return CommonEnumStatus.UNKOWN;

}

public static EnumStatus getStatusByDesc(Class<?> enums, String desc) {

if(enums.isEnum()) {

Object[] statuses = enums.getEnumConstants();

for(int i = 0; i < statuses.length; i++) {

EnumStatus status = (EnumStatus)statuses[i];

if(status.getDesc().equals(desc)) {

return status;

}

}

}

return CommonEnumStatus.UNKOWN;

}

/**

*

* @param enums 枚举类

* @param sta 提示返回值

* @return

*/

public static List<Hashtable> getListByEnum(Class<?> enums,String sta){

List<Hashtable> resList =new ArrayList<Hashtable>();

if(enums.isEnum()) {

Object[] statuses = enums.getEnumConstants();

for(int i = 0; i < statuses.length; i++) {

EnumStatus status = (EnumStatus)statuses[i];

Hashtable tab = new Hashtable();

tab.put(sta+”_value”, status.getValue());

tab.put(sta+”_name”, status.getDesc());

resList.add(i,tab);

}

}

return resList;

}

}

4.controller层

/**

* 用户表 类型 It_user

* @param request

* @param response

* @return

*/

@RequestMapping(value = “/user/getUserVerifyStatus.json”) public @ResponseBody List<Hashtable> getUserVerifyStatus(HttpServletRequest request,HttpServletResponse response) {

return EnumStatusUtils.getListByEnum(EnumUserVerifyStatus.class, “verifyStatus”);

}

结语

通过这种应用方式,在前端的类型添加和修改都是通过枚举类型内容决定的,要添加或者修改新的类型只需要在枚举类型中做修改就可以,不需要该代码的很多 地方。

另外需要注意的是,因为这种类型格式都是在数据库中保存的,不建议做删除处理。

我表述的东西可能不是特别准确和容易理解,毕竟小编是个理科生,语文还是体育老师教的。大家有需要问的问题可以留言,我会及时回复大家。

文章来源:智云一二三科技

文章标题:你所不知道的JAVA枚举(Enum)的使用

文章地址:https://www.zhihuclub.com/194385.shtml

关于作者: 智云科技

热门文章

网站地图