java中的enum枚舉類


知識點:java代碼中枚舉enum的使用

(1)應用場景

某些時候,一個類的對象是有限的,並且是固定的,如季節,一年只有春夏秋冬;星期類,星期一至星期日

這種實例是有限的並且是固定的的類,在java中稱之為枚舉類,當枚舉類中只有一個實例的時候,相當於枚舉單例(https://www.cnblogs.com/shuaifing/p/10578661.html

(2)定義一個枚舉類  EmployeeState

package com.agesun.attendance.common.enums;
public enum EmployeeState {

//通過有參構造函數,實例化3個枚舉實例,並賦值
ENABLE(0,"啟用"), // 相當於 public static final EmployeeState ENABLE=new EmployeeState(0,"啟用"); 刪除其他部分保留ENABLE對象名,()和實參“0“,”啟用”
DISABLE(1,"禁用"), //public static final EmployeeState DISABLE=new EmployeeState(1,"禁用");
QUIT(2,"離職"); //public static final EmployeeState QUIT=new EmployeeState(2,"離職");


private int code;//實體類中的一個字段,為數字
    private String value; //每個int類型的數字代表一個中文含義

public int getCode() {
return code;
}

public String getValue() {
return value;
}

EmployeeState(int code, String value){ //構造方法
this.code = code;
this.value = value;
}
}

(3)枚舉測試類main方法

//enum關鍵字定義枚舉類
//1.常用方法:values()valueOf(String name)
//2.枚舉類實現接口:不同的枚舉類對象調用被重寫的方法,執行不同的內容。(相當於每一個對象重寫接口的抽象方法)


public static void main(String[] args){
//1.打印所有枚舉實例
for(EmployeeState enum1:EmployeeState.values()){
System.out.println(enum1.getCode()+"------"+enum1.getValue());
}
        System.out.println("===============================================");

//2.根據枚舉實例名稱,獲取枚舉實例
EmployeeState enum2=EmployeeState.valueOf(EmployeeState.class,"ENABLE");//不帶枚舉類也可以 EmployeeState enum2=EmployeeState.valueOf("ENABLE");
System.out.println(enum2.getCode()+"----"+enum2.getValue());
}


輸出結果:


(4)補充:枚舉實例可以重寫抽象方法,執行不同的內容

代碼
public enum EmployeeState implements show{
//通過有參構造函數,實例化3個枚舉實例,並賦值
ENABLE(0,"啟用"){
public void showInfo(){
System.out.println("正常狀態!"); //每個實例重寫接口里的抽象方法,實現各自的功能
}
},
DISABLE(1,"禁用"){
public void showInfo(){
System.out.println("禁用狀態!");
}
},
QUIT(2,"離職"){
public void showInfo(){
System.out.println("離職狀態!");
}
};
private int code;//實體類中的一個字段,為數字
private String value; //每個int類型的數字代表一個中文含義
public int getCode() {
return code;
}
public String getValue() {
return value;
}
EmployeeState(int code, String value){ //構造方法
this.code = code;
this.value = value;
}
@Override
public void showInfo() {
System.out.println("接口抽象方法!"); //重寫接口的抽象方法,這里的抽象方法如果不輸出內容,將接口里的抽象方法寫到這里,EmployeeState類不實現接口也是可以的 如:abstract void showInfo();
}
}

interface show1{ //抽象接口
void showInfo();
}
main方法
public static void main(String[] args) {

//3.不同的枚舉類對象調用被重寫的方法,執行不同的內容
EmployeeState enum3=EmployeeState.valueOf("DISABLE");
enum3.showInfo();
}

結果



參考:https://blog.csdn.net/lzj3462144/article/details/76832779?foxhandler=RssReadRenderProcessHandler


免責聲明!

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



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