zoukankan      html  css  js  c++  java
  • 枚举类的理解和应用

    枚举类型

    定义

        用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。是指将变量的水电费水电费水电费列出来,变量的值只限于列举出来的值的范围内。
    

    简单形式

        `public enum StatusEnum {AVAIABLE,DISABLED}`
        只是定义一个枚举然后里面写入几个常量而已,可以将一些有关类型的信息保存在枚举类里面,在使用的时候发现`StatusEnum.AVAIABLE`代表的是该枚举类型的量,觉得比较奇怪枚举里面不是常量吗,为啥还是枚举类型呢,原来枚举里面的各个选项是枚举的具体实例,可以这样理解枚举类型上面的枚举可以写成下面的形式。
        代码如下:
        `public class StatusEnum { private static final StatusEnum AVAIABLE ="AVAIABLE"; private static final StatusEnum DISABLED="DISABLED";}`
    

    重写构造函数

        我们可以通过重写构造函数让枚举类型复杂一些,为我们保存类型于键值对的值,例如异常信息、前后端状态码信息等都可以保存在里面,举个Spring框架用到的HttpStatus该枚举类保存了后端返回到前端的各种错误状态码以及原因,源码如下:
    
    public enum HttpStatus {
    
        // 1xx Informational
    
        /**
         * {@code 100 Continue}.
         * @see <a href="http://tools.ietf.org/html/rfc7231#section-6.2.1">HTTP/1.1: Semantics and Content, section 6.2.1</a>
         */
        CONTINUE(100, "Continue"),
        /**
         * {@code 101 Switching Protocols}.
         * @see <a href="http://tools.ietf.org/html/rfc7231#section-6.2.2">HTTP/1.1: Semantics and Content, section 6.2.2</a>
         */
        SWITCHING_PROTOCOLS(101, "Switching Protocols"),
        /**
         * {@code 102 Processing}.
         * @see <a href="http://tools.ietf.org/html/rfc2518#section-10.1">WebDAV</a>
         */
        PROCESSING(102, "Processing"),
        ……………………省略
    我们自定义的UserStatus为:
    
    package com.tgb.admin.model;
    
    public enum UserStatus {
    
        /** 无效*/  
        DISABLED(0,"the user is not exits"),  
        /** 有效 */  
        AVAILABLE(1,"user is persistent");  
    
        private int status;  
    
        private String value;
    
        UserStatus(int status,String content){  
            this.status = status;  
            this.value=content;
        }  
    
        public int getStatus() {  
            return status;  
        }  
        public String getValue(){
            return value;
        };
    }
    
    设计和使用枚举是为了提供一组不变的常量,所以,我们并给成员变量提供set方法。
    

    枚举作为实体属性映射

        想把枚举作为实体的一个属性映射到数据库里面,这样省了很多转换过程,如枚举状态为1,表示无效,2表示有效,让枚举自动转换保存到数据库里面为整形,mybatis映射查了查是可以完成枚举映射的,不过在映射过程中总是出错,暂时还没有映射成功,只是加深一下对于枚举类型的理解和使用。
        日后应该多应用一下枚举
    
  • 相关阅读:
    P2522 [HAOI2011]Problem b(容斥)
    P3455 [POI2007]ZAP-Queries
    P2519 [HAOI2011]problem a(线段树优化dp+思维)
    P2516 [HAOI2010]最长公共子序列 (lcs+容斥)
    [HAOI2010]软件安装(缩点+树形dp)
    P2508 [HAOI2008]圆上的整点(神仙题)
    [SDOI2011]消防(树的直径+二分||单调队列)
    QLabel设置字体颜色
    Qt绘制不规则串口
    C++继承关系
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978484.html
Copyright © 2011-2022 走看看