Answers:
将星形投影视为不仅代表任何类型,而且代表某些您不知道确切类型的固定类型的方法可能会有所帮助。
例如,类型MutableList<*>
表示某物的列表(您不知道到底是什么)。因此,如果您尝试向此列表添加内容,则不会成功。它可以是的列表,也可以是的列表String
,或Int
其他内容的列表。编译器根本不允许在该列表中放置任何对象,因为它无法验证列表是否接受此类型的对象。但是,如果您尝试从此类列表中删除元素,则肯定会得到类型的对象Any?
,因为Kotlin中的所有对象都继承自Any
。
从下面的asco评论:
另外
List<*>
,它可以包含任何类型的对象,但只能包含该类型的对象,因此它可以包含Strings(但只能包含Strings),而List<Any>
可以包含Strings和Integers之类的东西,所有这些都在同一列表中。
在上下文中,我认为您隐含SomeGeneric<*>
等于SomeGeneric<out Any?>
。Java等效于SomeGeneric<? extends Object>
。
语法称为“星形投影”。这是官方文档:https : //kotlinlang.org/docs/reference/generics.html#star-projections