📜  java 从字符串中获取枚举 - Java (1)

📅  最后修改于: 2023-12-03 14:42:17.668000             🧑  作者: Mango

Java 从字符串中获取枚举

在Java中,枚举(Enum)是一种特殊的数据类型,用于表示一组固定的常量。但是在实际开发中,我们经常需要在代码中根据字符串来获取对应的枚举值。本文将介绍如何从字符串中获取枚举值。

创建枚举

首先,我们需要定义一个枚举类型。假设我们要定义一个表示星期的枚举类型,代码如下:

public enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
根据字符串获取枚举值
使用 valueOf 方法

Java中的枚举类型提供了一个静态方法valueof,可以将字符串转换为对应的枚举值。代码如下:

Weekday weekday = Weekday.valueOf("MONDAY");
System.out.println(weekday); // 输出:MONDAY

需要注意的是,如果传入的字符串不是枚举类型中的一个值,则会抛出 IllegalArgumentException 异常。

使用自定义方法

如果我们需要更加灵活地从字符串中获取枚举值,可以定义一个自己的方法。在这个方法中,我们可以使用枚举类型中的 values 方法获取所有的枚举值,然后在这些值中查找与字符串相等的枚举值。代码如下:

public static Weekday fromString(String value) {
    for (Weekday weekday : Weekday.values()) { // 遍历枚举值
        if (weekday.name().equalsIgnoreCase(value)) { // 判断字符串是否相等
            return weekday; // 返回枚举值
        }
    }
    throw new IllegalArgumentException("Invalid value: " + value);
}

Weekday weekday = Weekday.fromString("Monday");
System.out.println(weekday); // 输出:MONDAY
总结

在Java中,我们可以使用 valueOf 方法或自定义方法来从字符串中获取枚举值。如果使用 valueOf 方法,需要注意传入的字符串必须是枚举类型中的一个值。如果使用自定义方法,需要注意遍历枚举值时要使用 values 方法,同时需要注意字符串的大小写。