Java 中如何将字符串转换为枚举?

2025年6月19日 | 阅读 4 分钟

Java 枚举是一种强大的数据类型,用于表示一组固定的常量。它们通常用于定义对象可以取值的特定值集。有时,您可能希望将字符串表示形式转换为枚举值。在这种情况下,我们将探讨将 Java 中的字符串转换为枚举的各种策略,并为您提供完整的程序以更好地理解。

理解 Java 枚举

在深入转换过程之前,让我们简要回顾一下 Java 枚举。枚举(或简称 enum)是在 Java 5 中引入的,以提供一种更结构化的方式来表示常量值。枚举声明定义了该枚举类型的变量可以取的一组固定值。枚举中的每个值都称为枚举常量。

这是一个枚举声明的示例

在这种情况下,Day 是枚举的名称,它有七个常量,代表一周中的天数。枚举还可以拥有额外的字段和方法,使其比简单的常量值更灵活、更强大。

将字符串转换为枚举

当您有一个字符串表示形式并希望将其转换为枚举时,您可以根据您的要求遵循不同的策略。在这里,我们将讨论执行此转换的三种常用方法:使用 valueOf() 方法,使用自定义映射,以及使用 Enum.ValueOf() 方法。

方法 1:使用 valueOf() 方法

将字符串转换为枚举的最直接方法是使用枚举本身提供的 valueOf() 方法。此方法将枚举常量的名称作为字符串,并返回相应的枚举常量(如果找到)。这是一个示例

StringToEnumExample.java

输出

FRIDAY

在此示例中,我们通过调用 valueOf() 方法将字符串“FRIDAY”转换为 Day 枚举。结果是 Day.FRIDAY 枚举常量,然后将其打印到控制台。

需要注意的是,valueOf() 方法是区分大小写的,如果字符串与任何枚举常量都不匹配,则会抛出 java.lang.IllegalArgumentException。为了处理这种情况,您可以将转换包装在 try-catch 块中,以优雅地处理异常。

方法 2:使用自定义映射

在某些情况下,您可能需要执行字符串表示形式和枚举常量之间的自定义映射。当字符串值与枚举常量名称不完全匹配时,此方法非常有用。这是一个示例

StringToEnumExample.java

输出

FRIDAY

在此示例中,Day 枚举有一个名为 abbreviation 的额外字段,它表示该天的较短字符串表示形式。我们定义了一个自定义方法 fromAbbreviation(),它根据缩写执行转换。如果缩写与任何枚举常量匹配,则返回相应的枚举常量;否则,将抛出异常。

方法 3:使用 Enum.valueOf() 方法

第三种方法涉及使用 Enum.valueOf() 方法,这是一个通用的方法,用于将字符串转换为枚举常量。这是一个示例

StringToEnumExample.java

输出

SUNDAY

在此示例中,我们将枚举类(Day.class)和字符串表示形式(dayString)传递给 Enum.valueOf() 方法。如果找到,它将返回相应的枚举常量,如果未找到匹配项,则抛出 IllegalArgumentException。

在本文中,我们探讨了在 Java 中将字符串转换为枚举的各种方法。我们讨论了使用 valueOf() 方法、创建自定义映射以及利用 Enum.valueOf() 方法。根据您的要求,您可以选择最合适的方法。请记住在使用 valueOf() 方法时处理异常,并在字符串值与枚举常量名称不直接匹配时考虑自定义映射。