我对 Collectors.toList() 和 Collectors.toSet() 静态方法很困惑。这两种方法不接受任何参数。那么他们怎么知道要返回什么类型的 Collector 呢?
例如,如果我们有这一行:
Collectors.toList();
Run Code Online (Sandbox Code Playgroud)
返回的收集器是Collector<Object,?,List<Object>>。
如果我们有这一行:
Collector<Integer,?,List<Integer>> c = Collectors.toList();
Run Code Online (Sandbox Code Playgroud)
然后 Collectors.toList() 将返回一个Collector<Integer,?,List<Integer>>. 在不接受任何输入参数的情况下, toList() 方法如何知道它需要返回一个Collector<Integer,?,List<Integer>>?
也许如何编写 toList() 的示例代码对我的理解会有所帮助。
提前致谢。
此功能在泛型类型推断中作为目标类型引入。
Java 编译器利用目标类型来推断泛型方法调用的类型参数。表达式的目标类型是 Java 编译器期望的数据类型,具体取决于表达式出现的位置。
例如:
// v--- the generic parameter `T` is inferred by the target type
Collector<Integer,?,List<Integer>> c = Collectors.toList();
// v--- the unbounded type parameter is extends `Object`
Collectors.toList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2737 次 |
| 最近记录: |