簡體   English   中英

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

即使我將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

利用:

((Long) userService.getAttendanceList(currentUser)).intValue();

反而。

.intValue()方法在類Number中定義, Long擴展了該類。

結果的數量可以(理論上)大於整數的范圍。 我會重構代碼並改用返回的 long 值。

你可以這樣做:

int k = Math.toIntExact((Long) userService.getAttendanceList(currentUser));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM