zoukankan      html  css  js  c++  java
  • java中枚举类的实际应用

    知识点:在Java中,使用枚举类,当遇到实例类型有限的类时,并且数据库中用状态码代表一种含义时,如星期,性别,员工登陆某系统的状态等等,

                 可以考虑使用枚举类

                 本例子可以仿照,也可以使用自定义的类型处理器,处理枚举类型,使用方法参考另一篇博客:https://www.cnblogs.com/shuaifing/p/9330913.html

    (1)枚举类

    EmpsStatus.java一种状态码代码一种登录状态,如100代表用户已登录,其中getEmpStatusByCode,getEmpEnum都是根据用户的状态码获取对应的枚举类,实际中可以调用作用一致

    /*
     *
     * 保存数据库100,200,状态吗,不是默认的0,或者枚举名
     * */
    public enum EmpsStatus {
        
        LOGIN(100,"用户登录"),LOGINOUT(200,"用户退出"),REMOVE(300,"用户不存在");
        
        private Integer code;
        private String msg;

        private EmpsStatus(Integer code,String msg) {
            this.code=code;
            this.msg=msg;
        }

        public Integer getCode() {
            return code;
        }

        public void setCode(Integer code) {
            this.code = code;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }
        
        //按照状态码返回枚举对象
        public static EmpsStatus getEmpStatusByCode(Integer code){
            switch (code) {
            case 100:
                return LOGIN;
            case 200:
                return LOGINOUT;
            case 300:
                return REMOVE;
            default:
                return LOGINOUT;
            }
        }
        
        
        public static EmpsStatus getEmpEnum(int code) { //使用int类型
            for(EmpsStatus sourceEnum:  EmpsStatus.values()) {
                if(sourceEnum.getCode() == code) return sourceEnum;
            }
            return null;
        }
    }

    (2)实体类

    Employee.java

    public class Employee {
        
        private Integer id;
        private String lastName;
        private String email;
        private String gender;
        //员工状态
        private EmpsStatus empStatus=EmpsStatus.LOGINOUT;
        private String empstsus;//改字段为员工状态码字段,与数据中的字段对应
        
        
        
        public Employee() {
            // TODO Auto-generated constructor stub
        }
        
        public Employee(String lastName, String email, String gender) {
            super();
            this.lastName = lastName;
            this.email = email;
            this.gender = gender;
        }

        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public EmpsStatus getEmpsStatus() {
            return empStatus;
        }
        public void setEmpsStatus(EmpsStatus empsStatus) {
            this.empStatus = empsStatus;
        }

        public String getEmpstsus() {
            return empstsus;
        }

        public void setEmpstsus(String empstsus) {
            this.empstsus = empstsus;
        }

        @Override
        public String toString() {
            return "Employee [id=" + id + ", lastName=" + lastName + ", email="
                    + email + ", gender=" + gender +", empstsus=" + empstsus+ "]";
        }
        
        

    }

    (3)测试方法调用

    @Test
        public void testEnumStaus()throws IOException{
            SqlSessionFactory sqlSessionFactory= getSqlSessionFactory();
            SqlSession openSession= sqlSessionFactory.openSession();
            
            try{
               EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
               List<Employee> emplist=  mapper.getEmps();
               Employee emp=new Employee();
             //利用枚举类,对员工登录状态类型字段进行翻译
                 EmpsStatus empsStatus=null;
                 for(int i=0;i<emplist.size();i++){
                     emp=emplist.get(i);
                     empsStatus= empsStatus.getEmpEnum(Integer.parseInt(emp.getEmpstsus()));
                     System.out.println("code"+Integer.parseInt(emp.getEmpstsus()));
                     System.out.println("msg1"+empsStatus.getMsg());
                    if(empsStatus!=null) {
                        emp.setEmpstsus(empsStatus.getMsg());//数据库,查询emp对象后,根据员工状态字段调用getEmpEnum枚举类,方法,得到相应含义,再次赋值给emp对象的相应字段
                        System.out.println("msg2"+empsStatus.getMsg());
                    }
                 }
                 
                 for (Employee employee : emplist) {
                     System.out.println(employee);
                  }
                
            
                /*openSession.commit();*/
            }finally{
                openSession.close();
            }
        }

    源码:https://github.com/shuaishuaihand/enumdemo.git

  • 相关阅读:
    Python必须知道的异常处理
    类的内置方法(用实际代码来验证)
    类的三大特性(继承, 封装, 多态)
    面向对象编程代码详解(依赖关系,关联关系,组合关系)
    函数(匿名函数,嵌套函数,高阶函数,装饰器)
    常用模块
    对磁盘文件的操作(文件处理)
    字符编码
    常用数据类型
    编程介绍
  • 原文地址:https://www.cnblogs.com/shuaifing/p/9334267.html
Copyright © 2011-2022 走看看