假装返回数据

问题描述 投票:0回答:2

我使用伪装获得Long的userIdList。

伪装:

@GetMapping("getUsername/{userId}") 
ResultBean getUsername(@PathVariable("userId") Long userId);

ResultBean:

public class ResultBean<T>{
    private String statusCode;
    private T data;
}

方法getGroupUserIds:

@GetMapping("getGroupUserIds/{groupId}")
@ResponseBody
public ResultBean getGroupUserIds(@PathVariable Long groupId){
    List<Long> userList = ssoService.getGroupUserIds(groupId);
    logger.info("getGroupUserIds返回{}:{}",groupId,userList.size());
    return new ResultBean(ResultBeanConstant.OK, userList);
}

但是当我使用值时:

            List<Long> userIds = (List<Long>) resultBean.getData();
            log.info("userIds:{}",userIds.size());
            for (int i = 0; i < userIds.size(); i++) {
                Channel channel = getByUserId(userIds.get(i));
                if (channel!=null) {
                    channelList.add(channel);
                }
            }

它报告:java.lang.ClassCastException:java.lang.Integer无法转换为java.lang.Long

我不知道哪里出了问题,日志都还可以,已获取了值并返回了bean。但是为什么将Long更改为Integer?

java spring-cloud-feign
2个回答
0
投票
List<Long> userIds = (List<Long>) resultBean.getData();
            log.info("userIds:{}",userIds.size());
            for (int i = 0; i < userIds.size(); i++) {
                Long userId = Long.valueOf(String.valueOf(userIds.get(i)));
                Channel channel = getByUserId(userId);
                if (channel!=null) {
                    channelList.add(channel);
                }
            }

因此我将Integer更改为Long,并且可以使用。

Long userId = Long.valueOf(String.valueOf(userIds.get(i)));

但是为什么它如此工作?会失去准确性吗?


0
投票

您可以使用增强型for循环。您得到java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long是因为您在循环中使用了int,但是userIdsLong类型,因此不兼容。

List<Long> userIds = (List<Long>) resultBean.getData();
log.info("userIds:{}",userIds.size());
for (Long userId : userIds) {
     Channel channel = getByUserId(userId);
     if (channel!=null) {
         channelList.add(channel);
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.