目录
一、为什么要有枚举类?
二、枚举的简介
三、自定义枚举类
四、使用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;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
四、使用enum关键字
1.使用enum关键字替换class
2.
public static final Season SPRING = new Season("春天", "温暖"); 替换成SPRING("春天", "温暖");
3.如有多个对象,中间用,隔开
必须
4. 使用enum创建的常量对象要放在最前面;
必须在最前面
五、注意事项