java - 泛型的返回类型,何时使用返回类型以及何时只使用 returnType?
问题描述
在泛型api中,为什么有时类型参数写在返回类型之前,有时不需要?
以以下两个 Steam API 为例
Stream<T> limit(long maxSize)
和
<R> Stream<R> map(Function<? super T,? extends R> mapper)
为什么Stream.limit
返回类型只能写成Stream<T>
而不是<T> Stream<T>
?
何时使用<T> returnType <T>
,何时使用returnType<T>
?
解决方案
第T
一个示例中的泛型参数是Stream
正在操作的泛型参数,因此limit(...)
返回一个Stream
与调用的流相同的泛型类型的新参数limit(...)
。
在第二个例子中,结果的泛型类型Stream
可能会改变,因此需要一个单独的泛型参数。在这种情况下,结果的类型Stream
受mapper
-lambda 的影响。例如,如果Person
s 映射到它们SocialSecurityNumber
的 ,那么初始Stream
值将是 a Stream<Person>
, themapper
将是 typeFunction<Person, SocialSecurityNumber>
并且结果Stream
将是 a Stream<SocialSecurityNumber>
。
推荐阅读
- pyqt5 - QGraphicsPixmapItem 未正确定位
- azure - 将 Azure B2C 与 PowerBI Embedded 结合使用
- python - 如何使用单独的加载方法执行类?
- java - 使用专用 tomcat 用户运行 Tomcat9:启动失败,在 localhost:8080 中出现 JAVA_HOME 或 500
- python - 列值的求和函数不返回总和值而是返回奇异数组?
- python-3.x - Python3 DTLS 服务器/客户端
- java - 递归函数打印大的非预期值。尝试打印 Instructions.l 请求的递归值
- javascript - Vue 无法与 html 一起正常工作(在不应该按下按钮时刷新)
- reactjs - 在 React 应用程序中注册提交时将 displayName 添加到新的 Firebase Auth 配置文件
- php - 如何从具有多个属性的元素中获取属性值