方法参考是减少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));
}
流对可读性不利。我更喜欢有一个经验法则,如果是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)
可以读为英语句子。这是更清洁和更好的代码的标志。