【发布时间】:2019-04-13 05:06:45
【问题描述】:
谁能帮我解释一下这里发生了什么?
private val map1 = mutableMapOf<String, Data<State<*>>>()
private val map2 = mutableMapOf<String, Data<*>>()
init {
map1.put("1", Data<State<String>>()) //it does not work
map2.put("2", Data<State<String>>()) //it works
map2.put("3", Data<State<Int>>()) //it works
}
class Data<T>
class State<T>
我从 Kotlin 文档中读到,如果类型未知,您可以使用星形投影(*),然后再使用任何类型。那么为什么它不适用于第一种情况呢?上面写着Type Mismatch Error。
【问题讨论】:
-
这可能是一个愚蠢的想法,但尝试将状态中的 T 更改为不同的字母
-
我将 mutableMapOf
>>() 设置为 mutableMapOf >>() 并且它起作用了。我不知道为什么。 @尼克莫文 -
注意:我编辑了我的答案以阐明
Data<out State<*>>与存在类型的关系。发表评论,以便您查看。