作者:L灬MOXIE | 来源:互联网 | 2022-11-25 13:10
我在看流界面,发现这个方法:
Stream map(Function super T, ? extends R> mapper);
我找不到任何理由为什么"?延伸R"代替R:
Stream map(Function super T, R> mapper);
那么如果我像上面这样做会有什么不同?不是"?" 是我传递的R变量?它会延长RI无法找到原因.
1> ernest_k..:
它用于? extends R
允许map
声明的函数返回一个子类型R
例如,给定此流:
Stream numberStream = Stream.of(1, 2L);
在以下map
调用中,R
是Number
,但函数的类型为Function
:
Function function = n -> Integer.valueOf(n.intValue());
Stream numberStream2 = numberStream.map(function); //would have failed
如果它没有采取? extends R
,那么function
本来是一个无效的论点(Function
本来是必需的)