Java基础——枚举也可以这么用

Java基础——枚举可以这么用

写在前面

小付在设计查阅资料类型时,突然想给几个类型差不多的东西分成一个类别,Java中固定的那几个常量定义过去麻烦,我才回想起来还有枚举这个东东,想着基本没怎么使用了,就总结了最基础的用法,于是就有了这篇文章…

枚举概念

枚举是什么?

枚举就好比日常生活中星期的MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY就是一个典型的枚举。通常用来表示一个集列出又穷序列集的所有成员的程序。

枚举自JDK1.5更新之后就迎来了这个新的类型——enum。

枚举的常见用法

用法一:常量

用法一:常量

在枚举出来之前,我们通常都是通过:public static final xxx来定义常量的,而枚举问世后,可以把很多内容相关的常量分配到一个枚举类型中,而且这些在枚举类中的存在更多的其他方法。

代码实现:

public enum Season {
    //春
    SPRING,
    //夏
    SUMMER,
    //秋
    AUTUMN,
    //冬
    WINTER
}

用法二:switch-case语句

用法二:switch-case语句

没想到吧!enum也可以出现在我们的switch-case语句当中,使得代码可读性更强的同时,也完善了不同开发人员之间的沟通。

代码实现:

class SeasonCard{
    public Season getSeason(Season season){
        switch (season){
            case SPRING:
                return Season.SPRING;
            case SUMMER:
                return Season.SUMMER;
            case AUTUMN:
                return Season.AUTUMN;
            case WINTER:
                return Season.WINTER;
            default:
                throw new RuntimeException("枚举内容出错误!");
        }
    }
}

用法三:枚举类型中添加方法

用法三:枚举类型中添加方法

可以在枚举类中定义成员变量、构造方法、静态方法等

代码实现:

public enum Season {
    //春
    SPRING,
    //夏
    SUMMER,
    //秋
    AUTUMN,
    //冬
    WINTER;
    
    private long id;
    private Date startDate;
    
    Season() {
    
    }
    
    Season(long id, Date startDate) {
        this.id = id;
        this.startDate = startDate;
    }
    
    public static void getEndDate(){
        System.out.println("End Date : "+ new Date(System.currentTimeMillis() + 1000*3600*24*90L).toString());
    }
    
    public long getId() {
        System.out.println("ID :" + id);
        return id;
    }
    
    public Date getStartDate() {
        System.out.println("Start Date:"+startDate.toString());
        return startDate;
    }
    
}

用法四:覆盖枚举中的方法

用法四:覆盖枚举中的方法

比如覆盖 toString()方法

public enum Season {
    //春
    SPRING,
    //夏
    SUMMER,
    //秋
    AUTUMN,
    //冬
    WINTER;
    
    private long id;
    private Date startDate;
    
    Season() {
    
    }
    
    Season(long id, Date startDate) {
        this.id = id;
        this.startDate = startDate;
    }
    
    @Override
    public String toString() {
        return "Season" + this.id + this.startDate;
    }
}

用法五:枚举可以实现接口但是不能继承其他类

用法五:枚举可以实现接口但是不能继承其他类

因为在Java中明确规定了是不支持多继承,所以枚举类型已经继承了java.lang.Enum不能在继承其他类。

代码实现:

public enum Season implements CardInfo{
    //春
    SPRING,
    //夏
    SUMMER,
    //秋
    AUTUMN,
    //冬
    WINTER;
    
    private long id;
    private Date startDate;
    
    Season() {
    
    }
    
    Season(long id, Date startDate) {
        this.id = id;
        this.startDate = startDate;
    }

    @Override
    public String getInfo() {
        return new Customer().getName();
    }
}

interface CardInfo{
    public abstract String getInfo();
}

用法六: 使用接口组织枚举

用法六: 使用接口组织枚举

代码实现:

interface CardInfo{
    public abstract String getInfo();
    
    enum VIP implements CardInfo{
        //VIP等级
        VIP1,
        VIP2;
    
        @Override
        public String getInfo() {
            return VIP1.name();
        }
    }
    
    enum SVIP implements CardInfo{
        //SVIP等级
        SVIP1,
        SVIP2;
    
        @Override
        public String getInfo() {
            return SVIP1.name();
        }
    }
}

用法七:枚举集合的使用

用法七:枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。

EnumMap中的key是enum类型value是任意类型。

二者区别 参考于JDK8开发文档。

感谢

感谢 大师兄 的相关见解博客

用例均为小付自行设计

大家看看就可以明白其中意思

写在最后

以上就是枚举类型的相关用法,现在实际开发中已经很少使用了,
大家熟悉下他的基本使用就好了,因为如果连枚举都不知到的话确实
有点 容易引起同行的...

最后的最后

还是那句话

每天进步点 每天收获点

愿诸君 事业有成 学有所获

如果觉得不错 别忘啦一键三连哦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alascanfu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值