/**
* 一、枚举类的使用
* 1.枚举类的理解:类的多选只有有限个,确定的,我们称之此类为枚举类。
* 2.当需要定义一组常量是,强烈建议使用枚举类。
* 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
*
* 二、如何定义枚举类
* 方式一:jdk5.0之前,自定义枚举类
* 方式二:jdk5.0之后,使用enum关键字定义枚举类
*
* 三、Enum枚举类的常用方法
* 1. toString():返回枚举类实例的实例名
* 2. values():返回枚举类所有实例对象数组
* 3. valueOf(String objName):传入枚举类的实例名,返回实例,若传入的实例名不存在,则抛异常
*
* 四、使用enum关键字定义的枚举实现接口的情况
* 1.实现接口,在enum类中实现抽象方法
* 2.让枚举类的对象分别实现接口中的抽象方法
*
* @ClassName EnumDemo
* @author tfu
* @date 2021年3月18日 上午11:02:28
*/
public class EnumDemo {
public static void main(String[] args) {
Employee huawei = Employee.EMP_HW;
System.out.println(huawei.toString());
EmployeeEnum enum1 = EmployeeEnum.EMP_ZT;
//Enum类常用方法:
//1.toString(),打印对象名称
System.out.println(enum1.toString());
//2. values(),返回对象数组
EmployeeEnum[] enums = EmployeeEnum.values();
for (EmployeeEnum employeeEnum : enums) {
System.out.println(employeeEnum);
}
//3. valueOf(String objName) 返回枚举类中对象名是objName的对象
EmployeeEnum empbb = EmployeeEnum.valueOf("EMP_BB");
System.out.println(empbb);
}
}
//自定义枚举类
class Employee{
//1、声明Employee对象属性:使用private final 修饰;
private final String empID;
private final String empName;
//2、私有化构造函器,并给对象属性赋值
private Employee(String empName,String empID) {
this.empID = empID;
this.empName = empName;
}
//3、提供当前枚举类的多个对象 使用public static final 进行修饰
public static final Employee EMP_HW = new Employee("黑屋", "0000000002");
public static final Employee EMP_ZT = new Employee("昨天", "0000000001");
public static final Employee EMP_BB = new Employee("波波", "0000000001");
public static final Employee EMP_AR = new Employee("黯然", "0000000001");
public String getEmpID() {
return empID;
}
public String getEmpName() {
return empName;
}
@Override
public String toString() {
return "{\"empID\":\"" + empID + "\", \"empName\":\"" + empName + "\"}";
}
}
//使用Enum定义枚举类
@SuppressWarnings("all")
enum EmployeeEnum implements EnumInterFaceDemo {
//默认使用public static final 进行修饰
//2.枚举类中的所有对象实现接口中的抽象方法
EMP_HW("黑屋", "0000000002"){
@Override
public void show() {
}
},
EMP_ZT("昨天", "0000000001"){
@Override
public void show() {
}
},
EMP_BB("波波", "0000000001"){
@Override
public void show() {
}
},
EMP_AR("黯然", "0000000001"){
@Override
public void show() {
}
};
//1、声明Employee对象属性:使用private final 修饰;
private final String empID;
private final String empName;
//2、私有化构造函器,并给对象属性赋值
private EmployeeEnum(String empName,String empID) {
this.empID = empID;
this.empName = empName;
}
//1. enum类直接实现接口中的抽象方法
@Override
public void show() {
// TODO Auto-generated method stub
}
}
interface EnumInterFaceDemo{
void show();
}