kotlin - kotlin 泛型中 <out Any?> 和 <*> 的区别

标签 kotlin generics variance any nothing

我不明白 <out Any?> 之间的区别和 <*>在泛型中。我知道使用 <*>就像做 <out Any?><in Nothing>同时,但使用 <out Any?>导致相同的结果。

最佳答案

主要区别在于您不能使用 out Any?对声明为逆变的类型参数的投影(在声明位置使用 in)——它的所有使用位置必须显式或隐式地 in - 也被预测了。

此外,对于具有上限 T : TUpper 的类型参数, 你不能使用 out - 类型参数不是 TUpper 的子类型的投影.例如,如果类型声明为 Foo<T : Number> , 投影 Foo<out Any?>是无效的。 out Foo<*> 情况下的星投影的一部分 |表示上限,而不是 Any? .

关于kotlin - kotlin 泛型中 <out Any?> 和 <*> 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62780001/

相关文章:

kotlin - 从具有行的键值属性的枚举中提取Map <String,Object>?

android - 所选项目未在微调器 kotlin 中显示

java - 类型转换 Map<String, String> 到 Map<Object, Object>

python - 如何计算权重以最小化方差?

scala - 类型差异的问题

android - w : Detected multiple Kotlin daemon sessions at build/kotlin/sessions

kotlin - Coroutine Join 有什么作用?

c# - 如何将自定义通用接口(interface)实现与私有(private)类型一起使用?

go - 有没有一种断言类型的通用方法?

python - 如何计算 python 中列表的方差?