类的对象只有有限个 确定的 如
星期:星期一、星期二…..
性别:男、女
季节:春
支付方式:现金、支付宝…
订单状态:未付款、已付款、已发货、已取消…
当需要定义一组常量时,强烈建议使用枚举类
- 自定义枚举类
- 使用关键字enum定义枚举类
- enum关键字定义的枚举类顶级父类不是Object
- enum关键字枚举类顶级父类 class java.lang.Enum
- 枚举类可以实现接口
一、自定义枚举类
/*** @author:LYY 创建时间:2022/5/4* jkd5.0之前* 自定义枚举类*/public class Season {// 1. 属性需要声明为私有不可变的private final String name;private final String doc;// 2. 私有化构造器private Season(String name,String doc) {this.name = name;this.doc = doc;}// 3. 提供枚举类的多个对象 对象为静态不可变的public static final Season SPRING = new Season("春天", "春暖花开");public static final Season SUMMER = new Season("夏天", "烈日炎炎");public static final Season AUTUMN = new Season("秋天", "秋高气爽");public static final Season WINTER = new Season("冬天", "白雪皑皑");// 提供枚举类对象属性的访问public String getName() {return name;}public String getDoc() {return doc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", doc='" + doc + '\'' +'}';}}class SeasonTest{public static void main(String[] args) {System.out.println("Season.SPRING = " + Season.SPRING);}}
二、使用enum关键字定义枚举类
/*** @author:LYY* 创建时间:2022/5/4* 枚举类也可以实现接口* 重写接口方法* enum关键字定义的枚举类父类不是Object*/enum Season{// 一定要将枚举对象放在最上方SPRING("春天", "春暖花开"),SUMMER("夏天", "烈日炎炎");// 属性继续保持私有不可变修饰符private final String name;private final String doc;// 私有构造器private Season(String name, String doc){this.name = name;this.doc = doc;}}
三、枚举类常用方法
/*** @author:LYY 创建时间:2022/5/4*/public class JavaTest {public static void main(String[] args) {// toString 打印当前枚举对象的常量名称System.out.println("Season.SPRING.toString() = " + Season.SPRING.toString());// values 返回当前枚举类的对象(常量)Season[] values = Season.values();for (int i = 0; i < values.length; i++) {System.out.println("values = " + values[i]);}// 传递枚举常量名称 返回与名称匹配的枚举常量Season summer = Season.valueOf("SUMMER");System.out.println("summer = " + summer);}}
