知識點: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