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)...