java - 理解 Stream.generate 静态方法签名的问题

标签 java generics lambda java-8 java-stream

Java 为什么不选择这个签名<T> Stream<T> Stream.generate(Supplier<? extends T> supplier)在这个<T> Stream<T> Stream.generate(Supplier<T> supplier)

我的意思是下面的例子(不编译)作为 String 的供应商是正确的s 在 CharSequence 的流中也有效不是吗?

Supplier<String> constantHello = () -> "Hello";

long count = Stream.<CharSequence>generate(constantHello).count();

最佳答案

这是一个错误。参见 https://bugs.openjdk.java.net/browse/JDK-8132097

它已在 java 9 中得到纠正。如您所见here , 方法声明现在是

static <T> Stream<T> generate​(Supplier<? extends T> s)

关于java - 理解 Stream.generate 静态方法签名的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45773318/

相关文章:

java - 使用正则表达式在java中标记字符串

java - 泽西自定义上下文注入(inject)

C# 将 Func<T1, object> 转换为 Func<T1, T2>

java - 迭代通用枚举实例

vb.net - 如何从一个列表中删除另一个列表中的所有项目?

java - Apache Camel SNMP 组件

java - 在 java 中移动目录会抛出 java.nio.file.FileAlreadyExistsException

.net - Predicate<T> 在 .NET 3.0+ 中不可用吗

c# - Lambda 表达式中的多个 Where 子句

.net - VB.Net Lambda 查询