为什么在 lambda 表达式中使用过滤器时会出现错误?
Why does the errors shows up when using filters in lambda expressions?
我是 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' 应该充当谓词,return 应该充当布尔值。但是为什么会显示编译错误呢?使用以下行时我没有收到错误消息:
.filter(s->s.startsWith("G"))
上面,流被传递到过滤器。那么参数 s 的必要性是什么?例如,如果用作
,'.map' 会毫无错误地处理它
.map(String::toUppercase).
我猜是关于方法引用的基础知识。
String::toUppercase
相当于:
s -> s.toUppercase()
同时:
startsWith("G")
理论上等同于:
s -> s.startsWith("G")
这是语言所不允许的。
我是 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' 应该充当谓词,return 应该充当布尔值。但是为什么会显示编译错误呢?使用以下行时我没有收到错误消息:
.filter(s->s.startsWith("G"))
上面,流被传递到过滤器。那么参数 s 的必要性是什么?例如,如果用作
,'.map' 会毫无错误地处理它.map(String::toUppercase).
我猜是关于方法引用的基础知识。
String::toUppercase
相当于:
s -> s.toUppercase()
同时:
startsWith("G")
理论上等同于:
s -> s.startsWith("G")
这是语言所不允许的。