枚举是一种特殊的类型,用于表示一组常量。当我们需要创建枚举类型时,我们需要使用enum关键字,类似于我们使用关键字class和interface创建类和接口。例如,在下面的代码中,我们创建了一个名称为Level的枚举类型。它有三个常量,分别为LOW、MEDIUM和HIGH。常量之间使用逗号分隔,最后的常量以分号结束。
enum Level {
LOW,
MEDIUM,
HIGH;
}
枚举类型在定义完成后,我们可以查看枚举类型中的常量值。
for (Level aLevel: Level.values()) {
System.out.println(aLevel);
}
输出的结果为:
LOW
MEDIUM
HIGH
在上面的例子中,我们并没设置每个常量的值。所以,在编译的过程中,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:
//
}
当然,枚举类型还支持表示字符串常量。字符串常量枚举的定义方法与整形常量枚举的定义方法相似。区别是枚举类型中的成员变量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;
}
}
在Java语言中,枚举是一种特殊的类型。开发人员不仅可以使用枚举类型来定义常量,并且还可以将这些常量按照用途划分在不同的枚举类型之中。所以,通过定义不同的枚举类型,开发人员可以利用Java语言的类型系统,进行更多的类型校验,进一步提高程序的正确性和有效性。
注册用户登陆后可留言