首页 > 编程笔记 > Java笔记 阅读:5

Java enum枚举类型的用法(附带实例)

Java 中的枚举是一种特殊的类,它用来表示一个常量集合。

日常生活中我们经常会遇到枚举类型,比如性别分为男女、方向分为东南西北、季节分为春夏秋冬、一个星期分为 7 天等,这些都可以用一个固定的常量集合来表示,也就是用枚举类型来表示。

虽然枚举是一种特殊的类,但它不使用 class 关键字来定义,而是通过 enum 关键字来定义。语法如下:
访问修饰符 enum 枚举名 {
    枚举成员;
}
访问修饰符后接 enum 关键字再接枚举名,大括号里是枚举的所有常量成员,成员之间通过逗号分隔。

看一个实例,给一年四季定义一个枚举,这个枚举的名称为 Season,它包含的枚举成员为春夏秋冬(SPRING, SUMMER, AUTUMN, WINTER)。
public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}
定义枚举后可以通过“枚举名.成员”的方式对枚举进行访问,比如 Season.SPRING。

枚举很多时候都是与 switch 语句一起使用的,将枚举的成员作为判断条件以进行不同的处理,下面实例中使用 switch 语句实现对 Season 枚举的条件分支判断。
public class EnumTest4 {
    public static void main(String[] args) {
        printSeason(Season.SPRING);
        printSeason(Season.SUMMER);
        printSeason(Season.AUTUMN);
        printSeason(Season.WINTER);
    }

    static void printSeason(Season s) {
        switch (s) {
        case SPRING:
            System.out.println("春天");
            break;
        case SUMMER:
            System.out.println("夏天");
            break;
        case AUTUMN:
            System.out.println("秋天");
            break;
        case WINTER:
            System.out.println("冬天");
            break;
        }
    }
}
输出结果为:

春天
夏天
秋天
冬天


在了解枚举后是不是觉得枚举与普通的常量很相似,比如下面代码中的 Season 枚举:
public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}
可以按照下面代码中的 SeasonConstant 类定义四个常量:
public class SeasonConstant {
    public static final int SPRING = 0;
    public static final int SUMMER = 1;
    public static final int AUTUMN = 2;
    public static final int WINTER = 3;
}
效果和使用是不是很相似呢?确实,两种方式的效果差不多,只不过枚举具备更强的约束,从而保证使用更加安全。比较枚举成员时能限制只与同类枚举成员进行比较,而常量没有这种限制。

相关文章