📅  最后修改于: 2023-12-03 15:02:06.122000             🧑  作者: Mango
在Java中,枚举类型是一种特殊的类,表示编译时定义的一组常量。每个枚举常量都具有一个名称和一个值。有时我们需要根据字符串值查找对应的枚举常量,在本文中,将介绍一种在Java程序中按字符串值查找枚举的方法。
我们可以使用Java的枚举类提供的valueOf()方法进行字符串值和枚举常量的映射。valueOf()方法的定义如下:
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
该方法接受两个参数:枚举类型和字符串值。它会返回与该字符串值对应的枚举常量,如果找不到对应的枚举常量,则会抛出IllegalArgumentException异常。
下面是一个例子:
public enum Color {
RED("红色"), GREEN("绿色"), BLUE("蓝色");
private String desc;
Color(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
public static Color getColorByDesc(String desc) {
for (Color c : Color.values()) {
if (c.getDesc().equals(desc)) {
return c;
}
}
throw new IllegalArgumentException("No such color: " + desc);
}
在上面的例子中,我们定义了一个颜色枚举类型,并给每个枚举常量指定了一个描述性字符串。然后我们定义了一个静态方法,该方法接受一个字符串参数描述颜色,然后遍历所有的枚举常量,找到与该字符串对应的枚举常量并返回。如果找不到对应的枚举常量,则会抛出IllegalArgumentException异常。
我们可以通过如下代码使用getColorByDesc()方法:
Color c = getColorByDesc("绿色");
System.out.println(c); // Output: GREEN
# Java程序按字符串值查找枚举
在Java中,枚举类型是一种特殊的类,表示编译时定义的一组常量。每个枚举常量都具有一个名称和一个值。有时我们需要根据字符串值查找对应的枚举常量,在本文中,将介绍一种在Java程序中按字符串值查找枚举的方法。
## 实现方法
我们可以使用Java的枚举类提供的valueOf()方法进行字符串值和枚举常量的映射。valueOf()方法的定义如下:
```java
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
该方法接受两个参数:枚举类型和字符串值。它会返回与该字符串值对应的枚举常量,如果找不到对应的枚举常量,则会抛出IllegalArgumentException异常。
下面是一个例子:
public enum Color {
RED("红色"), GREEN("绿色"), BLUE("蓝色");
private String desc;
Color(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
public static Color getColorByDesc(String desc) {
for (Color c : Color.values()) {
if (c.getDesc().equals(desc)) {
return c;
}
}
throw new IllegalArgumentException("No such color: " + desc);
}
在上面的例子中,我们定义了一个颜色枚举类型,并给每个枚举常量指定了一个描述性字符串。然后我们定义了一个静态方法,该方法接受一个字符串参数描述颜色,然后遍历所有的枚举常量,找到与该字符串对应的枚举常量并返回。如果找不到对应的枚举常量,则会抛出IllegalArgumentException异常。
我们可以通过如下代码使用getColorByDesc()方法:
Color c = getColorByDesc("绿色");
System.out.println(c); // Output: GREEN