Java枚举类型enum
的详解及使用
什么是枚举类型enum
Java中的枚举类型enum
定义一个类,列出该类的所有实例,这些实例的值是有限的、预定义的。
是一组有名字的值的集合,它们常被用作程序中的常量或者可选择的值。
Java的枚举(enum)是一种比传统的常量更为灵活、可扩展的类型。
枚举类型enum
的使用
枚举的定义
enum
可以在类或者包的内部定义。
定义枚举时,第一行列出枚举的所有元素。每个枚举都是以逗号分隔的名称列表结束。在此之后,您可以将任何普通字段或方法添加到枚举中。
下面的例子定义了车型enum
:
public enum CarModel {
SEDAN, COUPE, WAGON, SPORTS, SUV
}
枚举的使用
当定义枚举类型时,编译器会自动为我们创建一个含有我们预定义了的常量的类,并为它们赋上值。我们可以通过枚举类型的名称来访问这些常量。
CarModel sports = CarModel.SPORTS;
枚举的遍历
Java支持对枚举类型进行遍历。从Java 5开始,我们可以使用枚举的静态方法values()返回一个包含所有枚举值的数组,然后使用for-each循环来遍历这个数组。
for (CarModel cm : CarModel.values()) {
System.out.println(cm);
}
枚举的方法
在枚举中,你也可以定义方法。
public enum CarModel {
SEDAN(4), COUPE(2), WAGON(4), SPORTS(2), SUV(4);
private final int numWheels;
private CarModel(int numWheels) {
this.numWheels = numWheels;
}
public int getNumWheels() {
return numWheels;
}
}
上面的例子中,我们为每个枚举定义了一个numWheels
,并且定义了一个返回numWheels
的方法。
示例
下面通过两个示例,进一步说明枚举类型的使用。
示例一:计算器
public class Calculator {
enum Operator {
ADD, SUBTRACT, MULTIPLY, DIVIDE
}
static int calculate(int a, int b, Operator op) {
switch (op) {
case ADD:
return a + b;
case SUBTRACT:
return a - b;
case MULTIPLY:
return a * b;
case DIVIDE:
return a / b;
default:
throw new AssertionError("Unknown operator: " + op);
}
}
public static void main(String[] args) {
int a = 10, b = 5;
System.out.println(a + " + " + b + " = " + calculate(a, b, Operator.ADD));
System.out.println(a + " - " + b + " = " + calculate(a, b, Operator.SUBTRACT));
System.out.println(a + " * " + b + " = " + calculate(a, b, Operator.MULTIPLY));
System.out.println(a + " / " + b + " = " + calculate(a, b, Operator.DIVIDE));
}
}
在这个示例中,我们使用枚举类型Operator
。我们定义了四种运算符:ADD
、SUBTRACT
、MULTIPLY
、DIVIDE
。在calculate()
方法中,我们使用了switch
语句,根据操作符来计算两个数字。
示例二:季节
public class Season {
enum SeasonName {
SPRING, SUMMER, FALL, WINTER
}
static String getSeasonDescription(SeasonName seasonName) {
switch (seasonName) {
case SPRING:
return "The weather is getting warmer.";
case SUMMER:
return "The weather is hot.";
case FALL:
return "The leaves are changing color.";
case WINTER:
return "The weather is cold and it may snow.";
default:
throw new AssertionError("Unknown season name: " + seasonName);
}
}
public static void main(String[] args) {
SeasonName[] seasons = SeasonName.values();
for (SeasonName season : seasons) {
System.out.println(season + ": " + getSeasonDescription(season));
}
}
}
在这个示例中,我们使用枚举类型SeasonName
。我们定义了四个季节:SPRING
、SUMMER
、FALL
、WINTER
。在getSeasonDescription()
方法中,我们根据季节来返回一个字符串,简要描述该季节所代表的天气特点。
在main()
方法中,我们使用for
循环来遍历所有季节,并且输出它们的名称和描述。
结论
枚举类型enum
是一种非常方便、易于使用、可扩展的类型。在Java 5之后,它成为了Java程序员的标配。在开发程序时,尽量使用枚举类型,可以极大地提高程序的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java枚举类型enum的详解及使用 - Python技术站