Java 将lambda转换为方法引用
我有一个小工具清单Java 将lambda转换为方法引用,java,java-8,Java,Java 8,我有一个小工具清单 List<String> gadgets = new ArrayList<>(); gadgets.add("SmartPhone"); gadgets.add("SmartWatch"); gadgets.add("SmartTV"); gadgets.add("SmartDoor"); gadgets.add("iPhone"); 您必须将代码移动到以下方法中: private void accept(String s) { S
List<String> gadgets = new ArrayList<>();
gadgets.add("SmartPhone");
gadgets.add("SmartWatch");
gadgets.add("SmartTV");
gadgets.add("SmartDoor");
gadgets.add("iPhone");
您必须将代码移动到以下方法中:
private void accept(String s) {
System.out.println("processing: " + s);
}
private boolean test(String s) {
return s.length() > 8;
}
然后:
String myItem = gadgets
.stream()
.peek(YourClass::accept)
.filter(YourClass::test)
.findFirst()
.orElse("");
在这种情况下,我建议坚持使用lambda。只需按照上面的格式设置代码,lambda将是可读的。您不能在这里这样做,因为您有额外的逻辑,如
“处理:”+s
和>8
。如果要删除它,可以将其更改为:.peek(System.out::println)
另一种方法是将逻辑包装到单独的方法中,如:
public boolean isLengthMoreThan8(String s){
return s.length > 8
}
和使用方法参考:
.filter(this::isLengthMoreThan8)...
.filter(this::isLengthMoreThan8)...