java.lang.ClassCastException:java.lang.Long 无法在 java 1.6 中转换为 java.lang.Integer
Posted
技术标签:
【中文标题】java.lang.ClassCastException:java.lang.Long 无法在 java 1.6 中转换为 java.lang.Integer【英文标题】:java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer in java 1.6 【发布时间】:2013-06-14 09:07:59 【问题描述】:即使我将 Object
转换为 int,但会发生此异常...
实际上我的 Hibernate-JPA 方法是返回 Object
然后我将 Object
转换为 int
...
这是我的休眠代码:
@Transactional
public Object getAttendanceList(User user)
Query query = entityManager.createQuery("select Count(ad) from AttendanceDemo ad inner join ad.attendee at where at.user=:user",
Long.class);
query.setParameter("user", user);
return query.getSingleResult();
现在我将这个Object
转换为int
:
int k = (Integer) userService.getAttendanceList(currentUser);
我正在将Object
转换为Integer
。
【问题讨论】:
看起来 getAttendanceList 正在向您返回 Long。你能发布相同的代码吗 您确定要返回整数吗? ClassCastException 说你没有返回一个整数...... 是的.. 我想将 getAttendanceList() 方法返回值存储到 k 中。然后只有 ClassCastException 来了,现在我正在转换为 (Integer) 但又来了那个异常.. 【参考方案1】:用途:
((Long) userService.getAttendanceList(currentUser)).intValue();
改为。
.intValue()
方法在 Number
类中定义,Long
扩展了该类。
【讨论】:
但 IDE 显示... 方法 intValue() 未定义对象类型 为什么不使用((Number) userService.getAttendanceList(currentUser)).intValue();
@johnchen902 是的,这是真的……但在这种情况下,我不确定 OP 是否真的想要那样。或者 db 模型会在一夜之间从 Long
更改为其他数字类型;)
哦...谢谢您.. fge..它正在工作...但是当我们像 ((Number) userService.getAttendanceList(currentUser)).intValue();它不起作用为什么???
@user2496295 呃!那应该可以...或者您是否还有另一个不是 JDK 的 Number
类?【参考方案2】:
结果的数量(理论上)可以大于整数的范围。我会重构代码并改用返回的 long 值。
【讨论】:
以上是关于java.lang.ClassCastException:java.lang.Long 无法在 java 1.6 中转换为 java.lang.Integer的主要内容,如果未能解决你的问题,请参考以下文章