Симулировать возврат данных - PullRequest
0 голосов
/ 31 марта 2020

Я использую feign для получения userIdList Long.

feign:

@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);
}

метод getByUserId:

public Channel getByUserId(Long userId) {
        return channels.get(userId);
    }

Но когда я использую значение:

            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?

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете использовать расширенный для l oop. вы получаете java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long, потому что вы используете int в себе для l oop, но ваш userIds тип Long, следовательно, они не совместимы.

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