java - 假装返回数据
问题描述
我使用 feign 来获取 Long 的 userIdList。
假装:
@GetMapping("getUsername/{userId}")
ResultBean getUsername(@PathVariable("userId") Long userId);
结果豆:
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 呢?
解决方案
您可以使用增强的 for 循环。你得到java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
是因为你int
在 for 循环中使用,但你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);
}
}
推荐阅读
- .net - 当我更新 .NET 框架时,docfx 不起作用
- ios - plotting sine and cosine with charts have kinks
- python - python 请求特定 SNI 证书的“证书验证失败”
- btrieve - 如何从 btrieve 文件中提取数据?
- mysql - Mysql在变量中选择
- javascript - onclick单选按钮将数字添加到总数但无限添加
- excel - 使用货币格式格式化多范围列表框
- python - 如何将缩短的 EPC 打印到标签上?
- vrml - 稀有轮子(Hinge2joints)不旋转
- r - 如何使序列提高一个数字到一个幂序列