在我的項目我有一個枚舉這樣的:java.lang.ClassCastException:java.lang.Short中不能轉換爲java.lang.Integer中
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())。有關更多信息,請參見[文檔](http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html)。 – VGR
感謝您的評論,我會嘗試! – niryo