我在看流界面,发现这个方法:
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
Run Code Online (Sandbox Code Playgroud)
我找不到任何理由为什么"?延伸R"代替R:
<R> Stream<R> map(Function<? super T, R> mapper);
Run Code Online (Sandbox Code Playgroud)
那么如果我像上面这样做会有什么不同?不是"?" 是我传递的R变量?它会延长RI无法找到原因.
ern*_*t_k 11
它用于? extends R允许map声明的函数返回一个子类型R
例如,给定此流:
Stream<Number> numberStream = Stream.of(1, 2L);
Run Code Online (Sandbox Code Playgroud)
在以下map调用中,R是Number,但函数的类型为Function<Number, Integer>:
Function<Number, Integer> function = n -> Integer.valueOf(n.intValue());
Stream<Number> numberStream2 = numberStream.map(function); //would have failed
Run Code Online (Sandbox Code Playgroud)
如果它没有采取? extends R,那么function本来是一个无效的论点(Function<Number, Number>本来是必需的)
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |