不,你必须使用或(对我来说看起来更好)。与泛型类一样,它应该适用于任何泛型流元素类型,因此不可能以类型安全的方式向API添加更简单的东西。例如,考虑接口中有方法。它肯定会看起来像这样更好:.mapToInt(value -> value)
.mapToInt(Integer::intValue)
Stream
asIntStream()
Stream
IntStream intStream = integers.stream().asIntStream();
但是,例如,没有什么可以阻止您调用此类方法。在 Java 中,无法仅对特定的泛型参数启用调用该方法。因此,在另一种类型的流上意外调用它将编译良好,但会导致运行时异常,这在静态类型语言中是坏的。但是使用 或 强制类型检查:您必须提供一个返回的函数,以便正确报告编译错误。Stream<String>
.mapToInt(value -> value)
.mapToInt(Integer::intValue)
int
stringStream.mapToInt(value -> value)
如果你真的在乎,你可以自由地在你的项目中创建一个静态方法,如下所示:
public class Streams {
public static IntStream intStream(Collection<Integer> c) {
return c.stream().mapToInt(Integer::intValue);
}
}
并像这样使用它
IntStream intStream = Streams.intStream(integers);