use*_*587 0 java generics return-type
在泛型api中,为什么有时类型参数写在返回类型之前,有时不需要?
以以下两个 Steam API 为例
Stream<T> limit(long maxSize)
Run Code Online (Sandbox Code Playgroud)
和
<R> Stream<R> map(Function<? super T,? extends R> mapper)
Run Code Online (Sandbox Code Playgroud)
为什么Stream.limit的返回类型只能写为Stream<T>但不能<T> Stream<T>?
何时使用<T> returnType <T>,何时使用returnType<T>?
第T一个示例中的泛型参数Stream是正在操作的参数,因此limit(...)返回一个新Stream的与调用的流相同的泛型类型limit(...)。
在第二个例子中,结果的泛型类型Stream可能会改变,因此需要一个单独的泛型参数。在这种情况下,结果的类型Stream受mapper-lambda 的影响。例如,如果Persons 映射到它们的SocialSecurityNumber,那么初始值Stream将是 a Stream<Person>, themapper将是类型Function<Person, SocialSecurityNumber>,结果Stream将是 a Stream<SocialSecurityNumber>。
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |