为什么Java Stream.map以Function super P_OUT, ? extends R> mapper作为输入,而不是Function?
Java Stream的map方法接受一个Function super P_OUT, ? extends R> mapper作为输入,而不是Function
如果我们有一个泛型函数:
Functionfunc = String::valueOf;
那么我们可以这样使用:
Listlist = List.of(1, 2); Stream stream = list.stream().map(func);
或者这样使用:
Listlist = List.of(1L, 2L); Stream stream = list.stream().map(func);
这是因为Stream.map(...)方法的参数是Function super T, ? extends R> mapper,其中T和R分别是输入和输出的类型。这意味着如果T是Long类型,那么 super Long>将允许函数接受Long类型的元素,以下赋值也将变为有效:
Function super Long, ? extends String> mapper = func;
如果使用Function
Java Stream的map方法接受Function super P_OUT, ? extends R> mapper作为输入,允许更广泛的类型操作。这种设计使得代码更加灵活和可复用。