目录
一、为什么要有枚举类?
二、枚举的简介
三、自定义枚举类
四、使用enum关键字
五、注意事项
一、为什么要有枚举类?
假如我们有这样的一个需求:设计季节类,并创建对象。
我们就需要以下操作,创建Season类,然后new创建对象。这样固然能满足需要,但是,一年只有四个季节,但是以下代码还可以创建对象,而且,下面对于季节和季节的描述,都可以修改。这样的代码还是欠妥。
public class SeasonTest {public static void main(String[] args) {Season season1 = new Season("春天", "温暖");Season season2 = new Season("夏天", "炎热");Season season3 = new Season("秋天", "凉爽");Season season4 = new Season("冬天", "寒冷");}
}class Season {private String name;private String desc;public Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}
我们需要的对象,是有限的、只读的
二、枚举的简介
枚举对应英文enumeration,简写enum
枚举是一组常量集合,枚举是一种特殊的类,里面只包含了一组有限的特定的对象。
三、自定义枚举类
- 将构造器私有化,防止直接new
- 去掉setXXX方法,防止属性被修改
- 在Season内部,直接创建固定的对象
- 优化,可以加上final修饰符
public class SeasonTest {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);}
}class Season {private String name;private String desc;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("冬天", "寒冷");private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}
四、使用enum关键字
1.使用enum关键字替换class
2.
public static final Season SPRING = new Season("春天", "温暖"); 替换成SPRING("春天", "温暖");
3.如有多个对象,中间用,隔开
必须
4. 使用enum创建的常量对象要放在最前面;
必须在最前面
五、注意事项