我不了解<out Any?>
和<*>
泛型之间的区别。我知道,使用<*>
是喜欢做<out Any?>
和<in Nothing>
在同一时间,但使用<out Any?>
造成同样的结果。
主要区别在于,不能out Any?
在声明为反型的类型参数上使用投影(in
在声明站点上使用)-所有其使用站点也必须显式或隐式in
投影。
此外,对于具有上限的类型参数,T : TUpper
不能将out
-projection与类型参数一起使用,该参数不是的子类型TUpper
。例如,如果将类型声明为Foo<T : Number>
,则投影Foo<out Any?>
无效。该out
星形投影在的情况下,部分Foo<*>
装置的上限,而不是Any?
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句