我是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'应该作为谓词并返回一个布尔值。但为什么它会显示编译错误?使用以下行时,我没有收到错误:
.filter(s->s.startsWith("G"))
上面,流传递给过滤器。那么论证的必要性是什么?例如,'。map'处理它,如果用作没有任何错误
.map(String::toUppercase).
关于方法参考的基本知识我猜。
String::toUppercase
相当于:
s -> s.toUppercase()
而:
startsWith("G")
理论上相当于:
s -> s.startsWith("G")
语言根本不允许这样做。