Sonar代码异味:将Lambda替换为方法引用的代码改写方案
解决方案
原代码中的Lambda表达式path->path.getName()可以直接替换为方法引用File::getName,这正是Sonar要求的优化点。同时为了避免file.listFiles()返回null时引发空指针异常,建议补充空值处理逻辑让代码更健壮。
重写后的完整代码:
File file = new File(xxxxxx); Stream.ofNullable(file.listFiles()) .flatMap(Arrays::stream) .map(File::getName) .collect(Collectors.toList()) .toString();
关键优化说明
- 替换Lambda为方法引用:当Lambda表达式仅调用对象的某个实例方法时,可直接用
类名::实例方法名的格式简化,这是方法引用的典型适用场景,完全符合Sonar的优化要求。 - 新增空值安全处理:
file.listFiles()在目录不存在、无权限等场景下会返回null,Stream.ofNullable能将null安全转换为空Stream,避免触发NullPointerException。
内容的提问来源于stack exchange,提问作者Selenium New bie
相关产品推荐
相关产品推荐

