目录
1 枚举
1.1 枚举需求
要求创建季节(Season) 对象, Enumeration01.java
package chapter11.Enumeration;
/*
普通方法
*/
public class Enumeration01 {
public static void main(String[] args) {
final Season SPRING = new Season("春天", "温暖");
final Season SUMMER = new Season("夏天", "炎热");
final Season AUTUMN = new Season("秋天", "凉爽");
final Season WINTER = new Season("冬天", "寒冷");
//因为对于季节,他的对象(具体值),是固定的四个,不会有更多
//这个设计类的思路,不能体现季节是固定的四个对象
//因此,这样的设计不好
System.out.println(AUTUMN);
System.out.println(SPRING);
}
}
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;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
1.2 分析问题
1.季节的值是有限的几个值(spring, summer, autumn, winter)
2.只读,不需要修改。
1.3 解决方案
枚举(enumeration, 简写 enum)
枚举是一组常量的集合。
可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
1.4 枚举的两种实现方式
1.自定义类实现枚举
2.使用 enum 关键字实现枚举
1.5 自定义实现枚举
- 构造器私有化,防止直接new
- 不提供setXxx方法,因为枚举对象通常为只读
- 对枚举对象/属性使用 final+static 共同修饰,实现底层优化
- 枚举对象名通常使用全部大写,常量的命名规范
- 枚举对象根据需要,也可以有多个属性
自定义实现枚举,优化 Enumeration01.java代码
Enumeration02.java
package chapter11.Enumeration;
/*
自定义实现枚举
*/
public class Enumeration02 {
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;
//1. 将构造器私有化,目的防止 直接 new
//2. 去掉 setXx