传入多银行数据后接口仅返回单条结果的技术求助
问题分析与修复方案
代码里的核心问题
- 重复调用
res.listIterator().next():每次调用next()都会移动迭代器指针,两次调用会取列表里的前两个元素,但只赋值给一个BankExcel对象,后续元素完全没处理,还会出现第一个银行名称+第二个银行地址的错误组合。 - 未遍历全部银行数据:代码没有循环处理传入的
List<Banks>,只错误处理了前两个元素,根本没生成多个银行对象。 - 错误使用
Collections.singletonList():这个方法只能创建包含单个元素的不可变列表,而且你还错误地把bankDetails自身添加进去,完全不符合多银行数据的需求。 - 缺少返回语句:原方法没有
return,无法把结果返回给调用方。
修复后的代码
public BankDetails getRes(List<Banks> res) { BankDetails bankDetails = new BankDetails(); List<BankExcel> bankList = new ArrayList<>(); // 遍历所有传入的银行数据,逐个生成BankExcel对象 for (Banks bankData : res) { BankExcel bank = new BankExcel(); bank.setName(bankData.getName()); bank.setAddress(bankData.getAddress()); bankList.add(bank); } // 将所有银行对象的列表设置到BankDetails中 bankDetails.setVal(bankList); return bankDetails; }
修复说明
- 用for-each循环遍历整个
res列表,确保每一条银行数据都被处理成对应的BankExcel对象。 - 用
ArrayList收集所有生成的银行对象,支持存储多个元素。 - 修正
setVal的赋值逻辑,把收集好的银行列表传入,而非错误地传入bankDetails自身。 - 添加
return语句返回最终的BankDetails对象,保证接口能返回完整的多银行数据。
内容的提问来源于stack exchange,提问作者Tanushree Roy
相关产品推荐
相关产品推荐

