java 参数 enum_Java枚举根据参数获取对应值
时间: 2023-11-25 22:05:58 浏览: 48
在 Java 中,可以使用枚举(enum)来表示一组常量。如果我们想要根据给定的参数获取对应的枚举常量值,可以使用枚举的 `valueOf()` 方法。
例如,假设我们有一个枚举类型 `Color`,包含三个常量值:RED、GREEN 和 BLUE。现在我们想要根据一个字符串参数获取对应的枚举常量值,可以按照以下方式实现:
```
public enum Color {
RED, GREEN, BLUE;
}
public static Color getColor(String colorStr) {
try {
return Color.valueOf(colorStr.toUpperCase());
} catch (IllegalArgumentException e) {
// 如果找不到对应的枚举常量值,可以返回一个默认值或者抛出异常
return Color.RED;
}
}
```
在上面的代码中,我们首先将参数字符串转换为大写字母,然后使用枚举的 `valueOf()` 方法来获取对应的枚举常量值。如果找不到对应的枚举常量值,我们可以返回一个默认值或者抛出异常。
相关问题
java Enum根据value值获取对应的key
可以通过遍历枚举来实现根据value值获取对应的key。
示例代码:
```java
public enum Color {
RED(1), GREEN(2), BLUE(3);
private int value;
private Color(int value) {
this.value = value;
}
public int getValue() {
return value;
}
// 根据value值获取对应的key
public static Color getKey(int value) {
for (Color color : Color.values()) {
if (color.getValue() == value) {
return color;
}
}
return null;
}
}
// 测试
Color color = Color.getKey(2);
System.out.println(color); // 输出 GREEN
```
在上面的示例中,定义了一个Color枚举,其中包含三种颜色,每种颜色都有一个对应的value值。通过在枚举中添加一个静态的getKey方法,可以根据传入的value值获取对应的key。在方法中遍历枚举中的所有元素,如果找到了value值相等的元素,则返回该元素,否则返回null。
java Enum根据key值获取对应的value
在Java中,可以通过以下方式获取Enum类型的值:
1. 使用Enum的valueOf()方法,该方法根据传入的字符串参数返回对应的枚举常量,如果该字符串不是有效的枚举常量名称,则会抛出IllegalArgumentException异常。
例如:
```
public enum Color {
RED("红色"), GREEN("绿色"), BLUE("蓝色");
private String name;
Color(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Color color = Color.valueOf("RED");
System.out.println(color.getName()); // 输出:红色
```
2. 定义一个静态的Map对象,将枚举常量的key和value都存储在Map中,然后根据key值获取对应的value。
例如:
```
public enum Color {
RED("红色"), GREEN("绿色"), BLUE("蓝色");
private String name;
Color(String name) {
this.name = name;
}
public String getName() {
return name;
}
private static final Map<String, Color> map = new HashMap<>();
static {
for (Color color : Color.values()) {
map.put(color.name(), color);
}
}
public static Color valueOfName(String name) {
return map.get(name);
}
}
Color color = Color.valueOfName("RED");
System.out.println(color.getName()); // 输出:红色
```