网站首页 > 精选教程 正文
枚举
枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。Java从JDK5开始,引入了对枚举的支持。在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。
以上是一种官方的说法,其实在实际使用的过程中,我们用到最多的就是常量和数据库字段中的字段内容解析。
实例
下面我们直接开始上代码
接口。
定义统一的接口方便管理,所以枚举类都要实现该接口
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");
}
结语
通过这种应用方式,在前端的类型添加和修改都是通过枚举类型内容决定的,要添加或者修改新的类型只需要在枚举类型中做修改就可以,不需要该代码的很多 地方。
另外需要注意的是,因为这种类型格式都是在数据库中保存的,不建议做删除处理。
我表述的东西可能不是特别准确和容易理解,毕竟小编是个理科生,语文还是体育老师教的。大家有需要问的问题可以留言,我会及时回复大家。
猜你喜欢
- 2024-11-09 Java基础入门要学哪些 怎么掌握反射和枚举
- 2024-11-09 谈谈枚举的新用法--java java枚举类型有什么用
- 2024-11-09 Java面试基础回顾16-枚举 java面试基础知识点
- 2024-11-09 实际工作中推荐使用java枚举类型,提高开发效率#编程
- 2024-11-09 java枚举enumeration java枚举根据value获取key
- 2024-11-09 大年初二来简单聊聊java中枚举类的前世今生
- 2024-11-09 如何用枚举消除if/else?-枚举高阶用法
- 2024-11-09 干货 | 一文搞定Python 枚举 python 枚举遍历
- 2024-11-09 Scala学习九之枚举和Trait了解 枚举compareto
- 2024-11-09 java中的enum第一期:enum存在的意义
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)