【Java系列】:枚举和注解

在这里插入图片描述

☀️枚举

⚡️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);
    }
}
//演示字定义枚举实现
c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值