java枚举类型enum用法有哪些
原创### Java 枚举类型(Enum)用法全解析
Java 5引入了枚举类型(Enum),以更简洁、稳固的行为来即一组固定的常量。枚举类型不仅提高了代码的可读性,还可以防止在编译时对非法值的传递。以下将详细介绍Java枚举类型的各种用法。
定义一个枚举类型
使用enum
关键字来定义一个枚举类型。下面是一个明了的枚举即星期:
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
枚举的成员方法
枚举可以有构造方法、字段、方法和抽象方法。每个枚举项都可以调用构造方法,也可以有自己的字段和方法。
enum WeekdayWithActivity {
MONDAY("Sleep"),
TUESDAY("Workout"),
WEDNESDAY("Meeting"),
THURSDAY("Grocery"),
FRIDAY("Movie"),
SATURDAY("Weekend Trip"),
SUNDAY("Family Time");
private String activity;
private WeekdayWithActivity(String activity) {
this.activity = activity;
}
public String getActivity() {
return activity;
}
}
枚举的静态方法和字段
枚举也可以包含静态字段和静态方法,这些字段和方法在枚举的所有实例之间共享。
enum Constants {
PI(3.14159),
E(2.71828);
private final double value;
Constants(double value) {
this.value = value;
}
public double getValue() {
return value;
}
public static Constants fromValue(double value) {
for (Constants c : Constants.values()) {
if (c.getValue() == value) {
return c;
}
}
throw new IllegalArgumentException("Constants not found: " + value);
}
}
枚举的比较
枚举类型的比较可以使用equals()
方法或者==
运算符。由于枚举实例是唯一的,由此==
通常被推荐使用。
enum Color {
RED, GREEN, BLUE
}
public class EnumTest {
public static void main(String[] args) {
Color color1 = Color.RED;
Color color2 = Color.RED;
System.out.println(color1 == color2); // 输出 true
}
}
枚举的遍历
可以使用values()
方法来遍历所有的枚举项:
for (Weekday day : Weekday.values()) {
System.out.println(day);
}
枚举的switch语句
枚举非常适合用于switch语句:
Weekday day = Weekday.MONDAY;
String activity = "";
switch (day) {
case MONDAY:
activity = "Sleep";
break;
case TUESDAY:
activity = "Workout";
break;
// 其他枚举项
default:
activity = "Relax";
break;
}
System.out.println("Today's activity: " + activity);
总结
Java的枚举类型(Enum)是一个有力且灵活的特性,使代码更加明确、易于维护。枚举提供了一种优雅的行为来处理一组固定的常量,并且可以拥有自己的方法和字段,赞成静态成员,以及与switch语句的无缝集成。