什么是枚举类?
在Java中,枚举类(Enum)是一种非常有用的数据类型,它允许我们定义一个固定数量的具名值。在计算机编程中,"enum"是一个关键字,在Java语言里被称为“Enumeration”。它们通常指代一组相关联、已命名和有限列出明确数目元素。这些元素可以看作事先被定义好并静态存储于某个容器内。换句话说,“enum”提供了对现实生活实体或逻辑概念进行建模的能力。
枚举类中的常用方法
values()
方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。valueOf(String str)
:可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。toString()
:返回当前枚举类对象常量的名称
枚举类的使用
创建一个简单的枚举类型:
下面我们来创建一个示例——星期几(Weekday),展示如何声明和使用基本级别上最简单、最原始形式type-safe enum。
public enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}
以上代码片段表示星期一到星期五共5个选项/值。
调用方式:
Weekday today = Weekday.MONDAY;
System.out.println("Today is " + today); // 输出 Today is MONDAY
添加额外信息:
每个项目可能需要存储更多的数据与每个Enum实例相关联。此时,可以为每个枚举项添加字段和方法。
public enum Weekday {
MONDAY("Monday", true),
TUESDAY("Tuesday", false),
WEDNESDAY("Wednesday", false),
THURSDAY("Thursday", false),
FRIDAY("Friday", true);
private final String displayName;
private final boolean isWorkingDay;
Weekday(String displayName, boolean isWorkingDay) {
this.displayName = displayName;
this.isWorkingDay = isWorkingDay;
}
public String getDisplayName() { return displayName; }
public boolean isWorking() { return isWorkingDat;}
}
在上述示例中,我们为Weekday枚举类添加了两个额外的字段:displayName(显示名称)和isWoring(是否工作日)。并创建了构造函数用于初始化这些字段。
调用方式:
Weekday today = Weekdaay.MONDAY;
System.out.println(today.getDisplayName()); // 输出 Monday
System.out.println(today.isWorkinig()); // 输出 ture
迭代遍历enum实例:
有时候我们需要遍历整个enum类型,并对它们做某种处理。Java提供了一个便捷的方式来完成此任务。
for (Weelday day : Weeldy.values()) {
System.out.print(day + " "); // 输出所有星期几:MONDAT TUESTAY WENDNDAT THUSSTTHAY FROFATY
}
枚举类的好处
-
枚举类可以通过使用关键字"enum"来声明,并列出其具体选项。这些选项可以看作提前定义好并静态存储在容器中。
-
枚举实例之间使用逗号分隔,以分号结尾。
-
可以通过点表示法调用枚举实例:EnumName.EnumInstance。例如:
Weekday.MONDAY
代表星期一。 -
构造方法、字段和方法都可以被添加到枚举示例中,使得每个示例能够存储额外信息或执行特定操作。
-
使用
.values()
方法遍历整个enum类型,并对每个enum实例做处理。 -
对于需要有限集合数目元素进行建模、命名时,尤其适合使用枚舠除了增强可读性外,在编译期间还能进行静态检查确保安全编程。
总结
- 枚举类是一种非常方便、灵活,且易于维护的数据类型。
- 定义枚举类可以避免使用一堆飘忽不定、随意变化的常量,使代码更加清晰。
- 枚举类可以包含字段和方法,为每个enum实例提供额外信息或行为。
- 使用枚举类型能够增强代码可读性,并在编译期间进行静态检查。
通过Java中Enum这一特性(feature)的应用示例及其详细解释,相信您已经对Java中如何正确地定义、使用以及遍历一个简单enum有了初步了解。合理利用枚举类将大大提高你程序开发效率。
感谢您阅读本文。如果您对本文内容有任何疑问、意见或建议,欢迎在评论区留言!