三分钟深入了解Java枚举(Enumeration)

本文介绍了Java中的枚举类型,包括枚举的概念、创建与使用方法,并通过一个天气提醒器的实例展示了枚举在实际应用中的作用,强调了枚举的灵活性、安全性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

有时候我们想创建一个固定的常量表来代表一些恒定不变,或者我们不想去改变的东西。例如春夏秋冬四季和八大行星的顺序等。这个时候,我们就可以用到Java里面一个相对较新的概念,“枚举”(Enumeration)。

二、什么是枚举

枚举可以看做是类(class)的一种,用enum作为修饰附。一般我们都用大写字母来表示枚举里的项(两个单词用下划线连接)。正如我们上文所说的,枚举是用作代表“固定”的常量链,因此枚举类实际默认含有Public, Static 和 final。下面我们来看一个一年四季的枚举的代码。

三、如何创建和使用枚举

public enum Season {
    SPRING("Spring is comfortable", 1),
    SUMMER("Summer is hot", 2),
    AUTUMN("Autumn is chill", 3),
    WINTER("Winter is coming", 4);
    public String season;
    int order;

    Season(String season, int order) {
        this.season = season;
        this.order = order;
    }
}

这里我们创建一个春夏秋冬四季项的枚举类(演示中暂不封装)。可以看到原本class的修饰符我们换成了enum。从上面的例子我们可以看到,枚举的关键就是四个大写的春夏秋冬项。每个枚举项里都可以有自己的附的值,也有自己的构造器。(这么说来,也可以理解为每个枚举项其实就是自己的final static的对象实例)。

为了更好解释枚举项每个成分的意义,我们写一段方法实例:

 System.out.println(Season.SUMMER.season);//引用夏天项里的内容
        System.out.println(Season.values());//整个枚举类的哈希
        System.out.println(Season.SUMMER.order);//引用我们自己定义的顺序
        System.out.println(Season.SPRING);//显示春天项
        System.out.println(Season.SUMMER.ordinal());//显示系统默认的顺序

这里我们可以看到,枚举项不关有我们在构造器里加的属性,而且其自身本来也会有一个顺序【0开始】,可以通过ordinal来提取。以下是输出的结果:

Summer is hot
[LEnumDemo.Season;@4eec7777 
2
SPRING
1

四、实际的应用

这里我们用以上的代码生成一个根据春夏秋冬来提醒用户不同天气的天气提醒器。

public class WeatherReminder {
    String reminder;
    public String getReminder(Season currentSeason){
        switch (currentSeason){
            case SPRING:
                reminder = Season.SPRING.season;
                break;
            case SUMMER:
                reminder = Season.SUMMER.season;
            break;
            case AUTUMN:
                reminder = Season.AUTUMN.season;
            break;
            case WINTER:
                reminder = Season.WINTER.season;
            break;
        }
        return reminder;
    }
}

这里我们可以看到,生成的WeatherReminder有一个getReminder的方法,可以通过用户输入的枚举项来输出对应的结果:

public class Main {
    public static void main(String[] args) {
        WeatherReminder reminder = new WeatherReminder();
        System.out.println(reminder.getReminder(Season.AUTUMN));
    }
}

以上测试类的结果就是我们在Season里面创建的remind:

Autumn is chill

五、总结

枚举是用来代表一些恒定不变,或者我们不想去改变的东西。类(class)的一种,用enum作为修饰附(默认含有Public, Static 和 final)。枚举类可以创建其自己的构造器,方法和字段,可以进行灵活的调整使用。具有较好的安全性及稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值