⭐️枚举和注解⭐️
☀️枚举
⚡️1 问题引入
🚀要求创建季节(Season) 对象,请设计并完成。
class Season{
//类
private String name;
private String desc;//描述
//构造器
//getXX
//setXX
}
💻按照传统思路的代码如下:
public class Enumeration01 {
public static void main(String[] args) {
//使用
Season spring = new Season("春天","温暖");
Season winter = new Season("冬天","寒冷");
Season summer = new Season("夏天","炎热");
Season autumn = 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;
}
}
⚡️2 分析问题
🧐大家想一想这样写的话有什么不好的地方?
😲因为对于季节而言,它的对象是固定的四个值,不会更多。按照问题的引用这个思路,不能够体现季节是四个对象,因此,这样的设计不好
⚡️3 解决方案-枚举
① 枚举对应英文(enumeration, 简写 enum)
② 枚举是一组常量的集合。
③ 可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
⚡️4 枚举的二种实现方式
① 自定义类实现枚举
② 使用 enum 关键字实现枚举
⚡️5 自定义类实现枚举
① 将构造器私有化,目的防止 直接 new
//1. 将构造器私有化,目的防止 直接 new
private Season01(String name, String desc) {
this.name = name;
this.desc = desc;
}
② 去掉 setXxx 方法, 防止属性被修改
//演示字定义枚举实现
class Season01{
private String name;
private String desc;
//1. 将构造器私有化,目的防止 直接 new
//2. 去掉 setXxx 方法, 防止属性被修改
private Season01(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
}
③ 在 Season 内部,直接创建固定的对象
//定义了四个固定的对象
public static final Season01 SPRING = new Season01("春天", "温暖");
public static final Season01 WINTER = new Season01("冬天", "寒冷");
public static final Season01 AUTUMN = new Season01("秋天", "凉爽");
public static final Season01 SUMMER = new Season01("夏天", "炎热");
💻总代码如下:
public class Enumeration {
public static void main(String[] args) {
System.out.println(Season01.AUTUMN);
System.out.println(Season01.SPRING);
}
}