PaperTypes paperTypes = PaperTypes.valueOf(3);报错No enum constant com.gxhj.safetydocument.task.enums.PaperTypes.3
时间: 2024-02-28 22:53:25 浏览: 86
枚举类的valueOf方法需要传入枚举常量的名称,而不是枚举常量的值。如果需要根据枚举常量的值获取对应的枚举常量,可以在枚举类中定义一个静态方法,根据枚举常量的值返回对应的枚举常量。
例如,假设PaperTypes是一个枚举类,定义了一些枚举常量:
```java
public enum PaperTypes {
A4(1),
B5(2),
A3(3);
private int value;
private PaperTypes(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static PaperTypes valueOf(int value) {
for (PaperTypes paperType : values()) {
if (paperType.getValue() == value) {
return paperType;
}
}
throw new IllegalArgumentException("No enum constant com.gxhj.safetydocument.task.enums.PaperTypes." + value);
}
}
```
在上面的代码中,我们在枚举类中定义了一个静态的valueOf方法,该方法接受一个整数参数value,返回对应的枚举常量。在方法内部,我们使用了枚举类中的values方法获取所有的枚举常量,然后遍历枚举常量,如果枚举常量的值等于传入的value值,则返回该枚举常量。如果没有找到对应的枚举常量,则抛出IllegalArgumentException异常。
使用上述方法,可以根据枚举常量的值获取对应的枚举常量:
```java
PaperTypes paperTypes = PaperTypes.valueOf(3); // 返回枚举常量PaperTypes.A3
```
阅读全文