如何将以下代码更改为 lambda 方法参考

Posted

技术标签:

【中文标题】如何将以下代码更改为 lambda 方法参考【英文标题】:how to change the below code to lamba method reference 【发布时间】:2018-05-24 14:42:10 【问题描述】:

嗨,下面是我从提供的文件夹路径中获取文件列表的逻辑,下面的 sn-p 正在工作, 但是有声纳问题要更改代码以遵循带有方法引用的 lambda 表达式。 任何帮助表示赞赏。

public static File[] getFileName(String folderPath) 
    File[] fileEntry = null;
    File folder = new File(folderPath);
    fileEntry = folder.listFiles(new FileFilter()  
      @Override
      public boolean accept(File pathname) 
        return pathname.isFile();
      
    );
    return fileEntry;
  

提前致谢

【问题讨论】:

【参考方案1】:

IntelliJ IDEA 可以进行快速修复等代码优化。

Lambda 形式:

public static File[] getFileName(String folderPath) 
    File[] fileEntry;
    File folder = new File(folderPath);
    fileEntry = folder.listFiles(pathname -> pathname.isFile());
    return fileEntry;

最短的形式是:

public static File[] getFileName(String folderPath) 
    return new File(folderPath).listFiles(File::isFile);

【讨论】:

感谢您的快速响应 tkruse,它真的很有帮助,想添加一些 cmets,如 public static File[] getFileName(String folderPath) File[] fileEntry;文件夹 = 新文件(文件夹路径); fileEntry = folder.listFiles(路径名 -> 路径名.isFile());返回文件入口;这些代码即使在转换为 lambda 表达式后也会产生声纳问题,已经尝试过了,但最短的形式更明智,我觉得相对于声纳覆盖范围。 当然,第一种形式可能会给您其他警告。 Shortest 应该没有警告,否则告诉我们警告。如果我的回答没问题,请随意点击左侧的接受按钮。

以上是关于如何将以下代码更改为 lambda 方法参考的主要内容,如果未能解决你的问题,请参考以下文章

将 lambdas 的时区更改为 EST?

如何绕过 AWS Lambda 大小限制

以下代码的时间复杂度是多少,如何将其更改为线性或对数时间复杂度?

如何授权 Lambda 函数发布到 BigQuery?

如何在返回集合的 lambda 中使用异步

linq / lambda 中的多行 foreach 循环