我是lambda表达式的新手。我有以下代码:
List<String> someNumbers = Arrays.asList("N40", "N36", "B12", "B6", "G53", "G49", "G60", "G50", "G53", "I26", "I17", "I29", "O71");
someNumbers
.stream()
.filter(startsWith("G"))
在上面的代码中,“过滤器”应充当谓词并返回布尔值。但是为什么它显示出编译错误?使用以下行时不会出现错误:
.filter(s->s.startsWith("G"))
上面,流被传递到过滤器。那么对参数s的需求是什么?例如,'。map'用作它时不会有任何错误
.map(String::toUppercase).
答案 0 :(得分:3)
我猜想方法参考的基础知识。
String::toUppercase
等效于:
s -> s.toUppercase()
而:
startsWith("G")
理论上将等效于:
s -> s.startsWith("G")
这是语言所不允许的。