以下是一个示例的解决方法,其中编写了一个通用方法,该方法接受枚举和字符串作为参数。
public class Main {
enum Color {
RED, GREEN, BLUE
}
public static void main(String[] args) {
String colorString = "RED";
Color colorEnum = convertToEnum(colorString, Color.class);
System.out.println(colorEnum);
}
public static > T convertToEnum(String value, Class enumClass) {
if (enumClass.isEnum()) {
for (T enumValue : enumClass.getEnumConstants()) {
if (enumValue.name().equalsIgnoreCase(value)) {
return enumValue;
}
}
}
throw new IllegalArgumentException("Invalid enum value: " + value);
}
}
在上面的示例中,我们定义了一个枚举类型Color
,然后编写了一个main
方法来测试通用方法convertToEnum
。
convertToEnum
方法接受两个参数,一个是字符串value
,另一个是枚举类型的Class
。它首先检查传入的enumClass
是否是一个枚举类型,然后遍历该枚举类型的所有常量,比较常量的名称与传入的字符串value
(不区分大小写)是否匹配。如果匹配,则返回对应的枚举常量;如果没有匹配项,则抛出IllegalArgumentException
异常。
在main
方法中,我们将字符串"RED"作为参数传递给convertToEnum
方法,并指定枚举类型为Color.class
。方法返回的枚举常量被赋值给colorEnum
变量,并打印出来。
输出结果为:
RED
这表明我们成功地将字符串"RED"转换为了枚举常量Color.RED
。