Stream接口中的map函数的定义如下:
<R> Stream<R> map(Function<? super T,? extends R> mapper)
功能参数列表与功能接口自己的规范一致
Interface Function<T,R>
方法是
R apply(T t)
这意味着它需要一个T却返回一个R。但是我正在运行这段代码
import java.util.stream.*;
import java.util.function.*;
public class T3 {
public static void main(String...args){
mapTest();
}
static void mapTest(){
Stream<String> s = Stream.of("monkey", "gorilla", "bonobo");
s.map(String::length).forEach(System.out::print); // 676
}
}
想知道,它如何工作,但参数类型似乎不匹配?没有简单的方法来解释它,但是我的理解是一个Function应该接受T类型的输入并返回R类型。当在流中使用它时,它接受String类型的输入并返回int类型。(即string.length())。但Stream.map键入返回相同类型的流(即R,在这种情况下字符串即不是int): <R> Stream<R> map(Function<? super T,? extends R> mapper)。那么这是怎么回事?提前致谢。
繁星点点滴滴
鸿蒙传说
相关分类