在我的项目中,我有一个类似于这样的枚举类型:
我收到了异常。
public enum MyEnum {
FIRST(1),
SECOND(2);
private int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static MyEnum fromValue(int value) {
for (MyEnum e : MyEnum.values()) {
if (e.getValue() == value) {
return e;
}
}
return null;
}
我有这段代码:
Map<String, Object> myMap = new HashMap<>();
// Fill my Map with data from database
myMap = namedParameterJdbcTemplate.queryForList(qry, paramsMap);
***if (Arrays.asList(MyEnum.values())
.contains(MyEnum.fromValue((int)
myMap.get("myKey")) )))*** {
// Do something
}
我收到了异常。
java.lang.ClassCastException: java.lang.Short cannot be cast to java.lang.Integer** on this line : **if (Arrays.asList(MyEnum.values())
.contains(MyEnum.fromValue((int)myMap.get("myKey")) )))
myMap 被填充了来自数据库的数据,知道这是一个 SQL Server 数据库,并且从数据库返回的 myKey 是数据库中的 tinyint 类型。
请问我做错了什么吗? 谢谢。
敬礼。
EnumSet.allOf(MyEnum.class)
比Arrays.asList(MyEnum.values())
更高效(更易读)。有关详细信息,请参见文档。 - VGR