Java如何将双参数方法适配后传入仅接受单参数Function的文件导入方法
解决方案
你遇到的核心冲突是:fromLine方法需要传入String textLine和List<Product> products两个参数,但importItemsFromFile要求的converter参数是仅接收1个字符串参数、返回对应对象的Function<String,E>,所以无法直接传入fromLine的方法引用,你只需要在调用导入方法时用Lambda表达式把固定的商品列表参数提前绑定即可。
具体调用示例代码如下:
// 提前准备好你已有的商品列表、用来存导入结果的Purchase集合 List<Product> allProducts = /* 你现有的商品列表对象 */; List<Purchase> importedPurchases = new ArrayList<>(); // 调用文件导入方法 importItemsFromFile( importedPurchases, "你的采购记录文件路径.txt", // 用Lambda包装fromLine,提前绑定allProducts参数 line -> Purchase.fromLine(line, allProducts) );
额外说明
- Lambda表达式会自动捕获当前上下文里的
allProducts变量,相当于把双参数的fromLine包装成了符合要求的单参数转换函数,不需要修改原有两个方法的签名,也不影响现有代码的交叉引用逻辑。 - 你贴出的
fromLine方法代码不完整,需要补全return newPurchase;语句和方法闭合的}才能正常编译;另外代码中products.indexOf(purchases);这行没有任何作用,可以直接删除。
内容的提问来源于stack exchange,提问作者Keegan Meijer
相关产品推荐
相关产品推荐

