gpt4 book ai didi

java.lang.ClassCastException : java. lang.Short 无法转换为 java.lang.Integer

转载 作者:行者123 更新时间:2023-12-05 04:09:43 31 4
gpt4 key购买 nike

在我的项目中,我有一个像这样的枚举:

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 类型。

你能告诉我我做错了什么吗?谢谢。

问候。

最佳答案

这里:

(int)myMap.get("myKey")

我猜想 get 方法返回了对 Short 对象的引用,该对象不能转换为 Integer,因为 short 不是从 Integer 继承的。

您可以做的是转换为 Short,然后调用 intValue method ,像这样:

((Short)myMap.get("myKey")).intValue()

这将返回一个整数值

关于java.lang.ClassCastException : java. lang.Short 无法转换为 java.lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324241/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com