枚举
枚举是引用数据类型,由一组固定的常量组成的类型。
枚举,也可以称为枚举类。
基本使用
查询 JDK 文档 搜索 Enum
。
枚举类使用 enum 修饰,所有的枚举类都默认继承 java.lang.Enum类。
所以我们自定义的枚举类,不能继承其他类,但是可以实现接口。
枚举类不能 new 对象。
枚举类中默认书写的内容全部为:全局静态常量 public static final修饰的值。(全部大写)
枚举类的使用示例:枚举类型是值类型的常量作为属性。
java
package com.enumPart.Test02;
/**
* 枚举类使用enum修饰,所有的枚举类都默认继承自java.lang.Enum类。
* 所以我们自定义的枚举类,不能继承其他类,但是可以实现接口。
* 枚举类不能new对象。
* 枚举类中默认书写的内容全部为:全局静态常量 public static final 修饰的值。
*/
// 定义枚举类
public enum Gender {
// 全局静态常量
MALE,FEMALE
}
java
package com.enumPart.Test02;
public class Student {
// 定义 私有属性
private String sex;
// 使用 自定义枚举类型
private Gender gender;
public static void main(String[] args) {
// 创建 对象
Student stu = new Student();
// 赋值
stu.sex = "hello";
// 只能在 Gender 枚举类的 静态常量中 选择
stu.gender = Gender.MALE;
}
}
枚举类的使用示例2:枚举类型是一个对象类型的常量作为属性。
枚举类的构造方法不能写 public,默认是私有的 private。
java
package com.enumPart.Test01;
// 枚举类实现接口
public enum Employee implements Work{
// ";" 之前表示 枚举类 表示常量的位置
// 创建一个 枚举类型对象 常量 作为 枚举类属性
CEO("001","总裁","aqua"), // 相当于 new CEO();调用有参构造方法
CTO("002","总监","sakuna"), // 相当于 new CEO();调用有参构造方法
MANAGE("003","经理","yousa")
;
// 定义属性
private String id; // 编号
private String job; // 职位
private String name; // 名称
// 封装
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 无参构造方法,默认使用private修饰,默认不写就是私有的,所以不能new对象
Employee() {
}
// 有参构造方法,默认使用private修饰,默认不写就是私有的,所以不能new对象
Employee(String id, String job, String name) {
this.id = id;
this.job = job;
this.name = name;
}
// 实现这个接口
@Override
public void doWork() {
System.out.println(name+"在工作");
}
@Override
public String toString() {
return "Employee{" +
"id='" + id + '\'' +
", job='" + job + '\'' +
", name='" + name + '\'' +
'}';
}
// 根据员工ID返回员工员工对象
public static Employee getEmployeeById(String employeeId){
// 使用 values() 方法,得到枚举类属性数组
Employee[] values = Employee.values();
// 遍历枚举类中的属性
for (int i = 0; i < values.length; i++) {
// 查找id一样的 返回这个 属性对象
if (employeeId.equals(values[i].getId())){
return values[i];
};
}
// 没有找到则返回空
return null;
}
}
java
package com.enumPart.Test01;
// 定义抽象类
public interface Work {
// 抽象方法
void doWork();
}
java
package com.enumPart.Test01;
public class TestEnum01 {
public static void main(String[] args) {
// 枚举类不能创建对象,只能通过静态方法调用。
Employee employee = Employee.getEmployeeById("002");
System.out.println(employee); // Employee{id='002', job='总监', name='sakuna'}
// 使用枚举类对象
Employee cto = Employee.CTO;
System.out.println("cto = " + cto); // cto = Employee{id='002', job='总监', name='sakuna'}
// 枚举类对象 调用接口中实现的方法
cto.doWork(); // sakuna在工作
}
}
方法
Enum.values()
java
作用:枚举类自带这个方法,用于将本类中的所有属性(本类中的常量属性),转化为一个数组。此方法属于静态方法。
返回具有指定名称的指定枚举类型的枚举常量(JDK1.8);
参数:无
返回值:一个数组
示例:
Employee[] values = Employee.values();
每个元素是 枚举类中的常量。