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

原文地址:https://www.cnblogs.com/shuaifing/p/9210017.html