02_oo_13_enum

第二十六章 枚举

1 简介

枚举是一种特殊的类型,用于表示一组常量。当我们需要创建枚举类型时,我们需要使用enum关键字,类似于我们使用关键字class和interface创建类和接口。例如,在下面的代码中,我们创建了一个名称为Level的枚举类型。它有三个常量,分别为LOW、MEDIUM和HIGH。常量之间使用逗号分隔,最后的常量以分号结束。

enum Level {
    LOW,
    MEDIUM,
    HIGH;
}

枚举类型在定义完成后,我们可以查看枚举类型中的常量值。

for (Level aLevel: Level.values()) {
    System.out.println(aLevel);
}

输出的结果为:

LOW
MEDIUM
HIGH

2 整形常量枚举

在上面的例子中,我们并没设置每个常量的值。所以,在编译的过程中,Java编译器会自动的给它们分配一个常量值。但是,在有些应用场景下,我们希望设置不同的常量值。因此,我们可以使用如下的方法来定义枚举类型。

在下面的示例代码中,我们额外定义了一个构造函数,一个成员变量value和一个成员方法value()。私有成员变量value使用了final关键字,所以它是一个不变的常量。构造函数用于初始化成员变量value;而成员方法value()用于获取value的值。

enum Level {
    LOW (0),
    MEDIUM (5),
    HIGH (10);

    Level(int value) {
        this.value = value;
    }

    private final int value;
    public int value() {
        return this.value;
    }
}

在使用时,我们可以方便的将上述定义的枚举值用于if语句、switch语句或者循环语句中。

Level e = Level.LOW;
switch (e) {
    case LOW:
        System.out.println("This is the LOW level at value " + Level.LOW);
        break;
    case MEDIUM:
        System.out.println("This is the LOW level at value " + Level.MEDIUM);
        break;
    case HIGH:
        System.out.println("This is the LOW level at value " + Level.HIGH);
        break;
    default:
        //
}

3 字符串常量枚举

当然,枚举类型还支持表示字符串常量。字符串常量枚举的定义方法与整形常量枚举的定义方法相似。区别是枚举类型中的成员变量value的类型需要修改为String。

enum Level {
    LOW ("Low"),
    MEDIUM ("Medium"),
    HIGH ("High");

    Level(String value) {
        this.value = value;
    }

    private final String value;
    public String value() {
        return this.value;
    }
}

3 小结

在Java语言中,枚举是一种特殊的类型。开发人员不仅可以使用枚举类型来定义常量,并且还可以将这些常量按照用途划分在不同的枚举类型之中。所以,通过定义不同的枚举类型,开发人员可以利用Java语言的类型系统,进行更多的类型校验,进一步提高程序的正确性和有效性。

上一章
下一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.