首页 > 解决方案 > 应使用 lambda 删除未使用的方法参数 (squid:S1172) 误报

问题描述

我有一个使用参数作为 lambda 表达式的工作方法

private BiConsumer<List<String>, Properties> handleList(Properties p) {
    return (list, prop) -> executeSubList(list, prop);
}

因为p我收到了来自 SonarLint 的误报警告

Unused method parameters should be removed (squid:S1172)

如果我更改propp我收到编译错误

Lambda 表达式的参数 p 不能重新声明在封闭范围内定义的另一个局部变量

将方法参数用作 lambda 参数时是否存在真正的问题或误报检查?

标签: javalambdasonarlintfalse-positivemethod-parameters

解决方案


这个问题是真实的。此方法返回在一对 or和参数上BiConsumer运行的 a ,但不管. 您可以将其删除:executeSubListList<String>Propertiesp

private BiConsumer<List<String>, Properties> handleList() {
    // p was never used, and can just be removed -------^
    return (list, prop) -> executeSubList(list, prop);
}

推荐阅读