枚举
一、枚举的使用
1、枚举类的理解
类的对象只有有限个、确定的,我们称此类为枚举类。
2、当需要定义一组常量时,强烈建议使用枚举类
3、如果枚举类只有一个对象,则可以作为单列模式的实现方式
二、定义枚举
方式一 : JDK5.0之前自定义枚举类
public class Season02 {
/**
* seasonName 季节名
*/
private final String seasonName; // 声明Season类的属性; 使用private final修饰
/**
* seasonDesc 季节的描述
*/
private final String seasonDesc; // 声明Season类的属性; 使用private final修饰
// 为属性赋值
private Season02(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 提供当前枚举类的多个对象
public static final Season02 SPRING = new Season02("春天","万物复苏");
public static final Season02 SUMMER = new Season02("夏天","夏日炎炎");
public static final Season02 AUTUMN = new Season02("秋天","秋风瑟瑟");
public static final Season02 WINTER = new Season02("冬天","冰天雪地");
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season02{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
// 这是一个main方法,是程序的入口
public static void main(String[] args) {
Season02 spring = Season02.SPRING;
Season02 summer = Season02.SUMMER;
Season02 autumn = Season02.AUTUMN;
Season02 winter = Season02.WINTER;
System.out.println(spring);
System.out.println(summer);
System.out.println(autumn);
System.out.println(winter);
}
}
方式二 : JDK5.0使用Enum关键字来定义枚举类
package com.gaokangxiang.enums;
/**
* @author 高康翔
* @version 1.0.0
* @Date 2022/4/30 10:39
* <p>
* 如何去定义枚举类
* 方式二: jdk5.0使用Enum关键字来定义枚举类
* 说明 : 定义的枚举默认继承于java.lang.Enum
* <p>
* Enum类的主要方法
* 1、toString方法 返回当前枚举类对象常量的名称
* 2、values方法 返回枚举类型的对象数组,该方法可以很方便的变历所有枚举的值
* 3、valueOf(String str)方法 可以把字符串转为对应的枚举类对象,要求字符串必须是枚举类对象的名字
* 如不是,会有运行时异常
*/
public class Season01 {
// 这是一个main方法,是程序的入口
public static void main(String[] args) {
MySeason01 spring = MySeason01.SPRING;
MySeason01 summer = MySeason01.SUMMER;
MySeason01 autumn = MySeason01.AUTUMN;
MySeason01 winter = MySeason01.WINTER;
// 找到它的父类
System.out.println(MySeason01.class.getSuperclass());
// toString()方法
System.out.println(spring.toString());
System.out.println(summer.toString());
System.out.println(autumn.toString());
System.out.println(winter.toString()