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

标签 java sql-server casting integer short

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

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/

相关文章:

java - JUnit 出现初始化错误( eclipse 氧气)

java - 我需要创建 XML-PRC 兼容的 Web 服务

sql-server - “There can only be one IDENTITY column per table”-为什么?

sql - 一个月内每天的 MSSQL 总计

java - 如何在 Java 中将泛型类类型转换为另一个泛型类类型

java - 如何使用 Java 中的 Quartz Scheduler 框架运行 cron 作业?

java - 当键是一个类时的复合键

sql-server - 每天3000万条记录,SQL Server跟不上,需要其他类型的数据库系统吗?

Spring Boot data-jpa 和 nativeQuery Postgres cast

c# - 有没有办法使 .NET Cast<T> 扩展方法使用用户定义的隐式转换运算符?