lambda中的方法参考
#lambda #java

方法参考是减少Java流中噪声的好方法。

说我们有一个名称列表,我们想将它们映射到全名。我们可以使用以下代码来实现这一目标:

public void example() {
    List <String> names = Arrays.asList("Jerome", "Steve", "Cathy", "Lara");

    names.stream()
        .map((String name) -> {
            User user = repository.getUser(name);
            String fullname = user.firstname + " " + user.lastname;
            return fullname;
        })
        .forEach((String name) -> System.out.println(name));
}
如果您的lambda方法包含许多代码行,则

流对可读性不利。我更喜欢有一个经验法则,如果是3行或更多行,那么我们需要将代码提取到其专用方法。

public String getFullname(String name) {
    User user = repository.getUser(name);
    String fullName = user.firstname + " " + user.lastname;
    return fullname;
}

然后使用方法参考使我们的流更简洁,更短。

public void example() {
    List <String> names = Arrays.asList("Jerome", "Steve", "Cathy", "Lara");

    names.stream()
        .map(this::getFullname)
        .forEach((String name) - > System.out.println(name));
}

请注意,正确的名称方法将有所作为。代码map(this::getFullname)可以读为英语句子。这是更清洁和更好的代码的标志。