问题标签 [unbounded-wildcard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
63 浏览

java - List > 和 List > 以及如何正确使用?

考虑以下代码段:

  • 在这里,我试图了解如何解释这两个陈述
    • 表达式:1
      • 这里我们说 RHS 上的 List 必须使得列表的所有元素都满足条件? super List<? super Integer>
      • 但是doubleList//无论如何都不满足这个条件integerList-numberList因为我们期望一个类型是List<? super Integer>.
      • 仍然为什么我们在这里没有得到编译错误?
    • 表达:2
      • 在这里,我们期望 RHS 上的元素必须是subtype of List<? super Integer>
      • 所以doubleList直观上可以看成是一个能满足条件的候选。
      • 如果我包含doubleListArrays.asList表达式中,为什么仍然会出现编译错误?.

不确定我是否以正确的方式解释表达式 - 从逻辑上讲它似乎不符合我上面给出的解释可能有什么问题?

0 投票
1 回答
155 浏览

java - 过滤流会改变其通配符范围?

下面的方法编译没有问题:

但是,如果我像这样添加一个简单的过滤器:

它会产生以下错误:

不兼容的类型:
java.util.stream.Stream<java.util.Optional<java.lang.Number>> 无法转换为
java.util.stream.Stream<java.util.Optional<? 扩展 java.lang.Number>>

在 openJdk-11 和 openJdk-17 上测试。

我希望他们都做同样的事情(要么都编译好,要么都产生相同的编译错误),所以我对此感到非常困惑:这里的一般规则是什么,解释了为什么第一种方法可以编译但第二种方法才不是?谢谢!