【发布时间】:2022-01-22 18:15:55
【问题描述】:
下面的方法编译没有问题:
static Stream<Optional<? extends Number>> getNumbers(Stream<Number> numbers) {
return numbers.map(Optional::of);
}
如果我像这样添加一个简单的过滤器:
static Stream<Optional<? extends Number>> getNumbers2(Stream<Number> numbers) {
return numbers.map(Optional::of).filter(number -> true);
}
它会产生以下错误:
不兼容的类型:
java.util.stream.Stream>不能转换成
java.util.stream.Stream>
在 openJdk-11 和 openJdk-17 上测试。
我希望它们都做同样的事情(要么都编译正常,要么都产生相同的编译错误),所以我对此感到非常困惑:这里的一般规则是什么,解释了为什么第一种方法编译正常然而第二个没有? 谢谢!
【问题讨论】:
-
流> 似乎可以解决问题,但我想知道为什么
标签: java generics java-stream unbounded-wildcard