代码之家  ›  专栏  ›  技术社区  ›  Leonardo Alves Machado Vivek Kumar

调用对象方法的可选ifPresent

  •  4
  • Leonardo Alves Machado Vivek Kumar  · 技术社区  · 7 年前

    private Optional<Address> getAddress()
    

    我用它在我的系统上填写客户记录。因此,我编写了以下代码来设置记录的地址(如果存在)。

    Optional<Address> address = getAddress();
    if (address.isPresent())
      record.setAddress(address.get());
    

    可替换为ifPresent

    报告条件,如 Optional.isPresent() 可以用功能性风格重写。

    所以我想 ifPresent 简化我的代码 .然后我想到了这句话:

    getAddress().ifPresent(x -> record.setAddress(x));
    

    很好,三行合一 .但后来我从 声纳信号

    用方法引用替换此lambda

    为什么我只需要创建一个方法来设置一个变量?

    无论如何,因为我对使用 Optional ,我可能在这里误解了一些东西……那么,根据建议和最佳实践,我应该如何编写这段简单的代码呢?

    1 回复  |  直到 7 年前
        1
  •  8
  •   lucasvw    7 年前

    你不应该仅仅为了设置一个变量而创建一个新方法。SonarLint只是建议最好使用方法引用,而不是lambda表达式。

    The Java Tutorials - Method References .

    对于你的情况-Sonarint只是想让你用以下内容替换这一行:

    Record record = ...;
    getAddress().ifPresent(record::setAddress);