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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM