枚举enum在实际开发中的使用

What? enum

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是
7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。在 JDK 1.5
之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。

Why? enum

在实际开发过程中,我们会碰到很多类似于逻辑不同,但是要实现的业务内容有极其相似的需求,那碰到这种情况。一般来说用if-else的就可以解决,但如果很多了,难道说写一千个或者一万个,有的同学可能也会反驳,难道不能用case-when的方式来解决嘛,当然这样也是可以的,但我们的前提是"实现的业务内容有极其相似的需求",所以为了避免重复的造轮子,enum枚举成了我们的首选目标。

How? enum

  1. 创建一个枚举“类”
    在这里插入图片描述
public enum TestEnum {
    //5.声明详细的枚举类型
    BABY(Crowd.baby),
    YOUNG(Crowd.young),
    YOUTH(Crowd.youTh),
    MID(Crowd.mid);
    //3.私有化枚举类型,私有化该枚举的调用
    private Crowd crowd;
    private TestEnum(Crowd crowd) {
        this.crowd = crowd;
    }
    //4.提供一个外部可调用的公共方法
    public void getCrowd(Person person) {
        crowd.getTypeList(person);
    }
    //2.创建一个枚举
    enum Crowd{
        baby{
            //6.重写外层枚举提供的抽象方法
            @Override
            public void getTypeList(Person person) {
                person.setAge(1);
                person.setLike("小汽车");
                person.setAddress("海南");
                person.setName("Sum");
            }
        }, young{
            @Override
            public void getTypeList(Person person) {
                person.setAge(10);
                person.setLike("奥特曼");
                person.setAddress("上海");
                person.setName("Jane");
            }
        }, youTh {
            @Override
            public void getTypeList(Person person) {
                person.setAge(25);
                person.setLike("挣钱");
                person.setAddress("北京");
                person.setName("Mary");
            }
        }, mid {
            @Override
            public void getTypeList(Person person) {
                person.setAge(40);
                person.setLike("足球");
                person.setAddress("广州");
                person.setName("John");
            }
        };
       //且使用一个抽象方法,采用匿名内部类来实现
        public abstract void getTypeList(Person person);
    }
}

外部调用

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        TestEnum.BABY.getCrowd(person);
        System.out.println(person);
    }
}
Person{name='Sum', address='海南', age=1, like='小汽车'}

在这里插入图片描述
case-when搭配enum的用法
在这里插入图片描述
当明确需求以及返回内容时,只是类型发生变化,用case-when搭配enum。代码即简洁且对于后续维护也非常方便,只需要新增类型就可以实现,修改后续的逻辑规则也非常简单。
在这里插入图片描述
在这里插入图片描述
结语:多用enum的方式可以更加近距离的感受到编程思想,枚举也是一种设计模式的体现。希望路过的大佬多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值