目录
前言:
又是失眠,我发现我可真是个大冤种,永远都忘不掉你
一.枚举类定义及举例
/**
* 枚举类
* 一般是类的对象是有限个的,确定的
* 例如:性别:男女
* 星期:1-7
* 季节:春夏秋冬
* 当需要定义①一组②常量时,强烈建议使用枚举类
* @author Dionysus_xu
* @create 2022-03-09-14:00
*/
public class enumClass {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
}
}
//solution1:JDK5.0之前,自定义枚举类
//此处不做拓展
//solution2:JDK5.0以后,使用enum关键字定义枚举类
enum Season{//父类为:java.lang.Enum
//1.把所有常量的定义和描述都提前定义好
SPRING("春天","万物复苏"),
SUMMER("夏天","汗流浃背"),
AUTUMN("秋天","天高气爽"),
WINTER("冬天","寒风吹彻");
//2.声明私有变量
private final String seasonName;
private final String seasonDesc;
//3.定义好构造器
private Season(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//4.其他具体诉求
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// @Override
// public String toString() {
// return "Season{" +
// "seasonName='" + seasonName + '\'' +
// ", seasonDesc='" + seasonDesc + '\'' +
// '}';
// }
}
二.枚举类父类Enum类的几个常用方法测试
/**
* java.lang.Enum父类常用方法
* 1.values()
* 2.valueOf(String str)
* 3.toString()
* @author Dionysus_xu
* @create 2022-03-09-14:23
*/
public class AboutEnum {
public static void main(String[] args) {
//用自己定义的Season类来继承Enum类 调用具体函数
//toString
Season spring = Season.SPRING;
System.out.println(spring);
System.out.println("****************");
//values():输出枚举类的所有成员
Season[] values = Season.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
//调用的是toString()方法,如果重写了按重写的算
}
System.out.println("****************");
//.values()函数一般用来输出所有的状态
Thread.State[] values1 = Thread.State.values();
for (int i = 0; i < values1.length; i++) {
System.out.println(values1[i]);
}
//valueOf(String objName):寻找指定参数名的对象信息
Season winter = Season.valueOf("WINTER");
System.out.println(winter);
}
}
三.枚举类实现接口的两种方式
/**
* 用enum实现的枚举类 实现接口
* @author Dionysus_xu
* @create 2022-03-09-14:39
*/
public class ImplEnum {
}
//情况1:实现implements接口,并在方法体中实现抽象方法
//这里直接复制之前的Season了,实现一个runnable接口试试看
enum Season1 implements Runnable{
SPRING("春天","万物复苏"),
SUMMER("夏天","汗流浃背"),
AUTUMN("秋天","天高气爽"),
WINTER("冬天","寒风吹彻");
private final String seasonName;
private final String seasonDesc;
private Season1(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public void run() {
Season[] values = Season.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
}
}
//情况2:实现implements接口,针对每个成员都实现抽象方法
enum Season2 implements Runnable{
SPRING("春天", "万物复苏"){
@Override
public void run() {
System.out.println("春天,万物复苏");
}
},
SUMMER("夏天", "汗流浃背"){
@Override
public void run() {
//....
}
},
AUTUMN("秋天", "天高气爽"){
@Override
public void run() {
//....
}
},
WINTER("冬天", "寒风吹彻"){
@Override
public void run() {
//....
}
};
private final String seasonName;
private final String seasonDesc;
private Season2(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}