我不明白 <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/