我WeakHashMap
在 Kotlin 中创建了一个,由于某种原因,我无法调用put
它,它不会解决。
val dataMap: Map<Int, MyData> = WeakHashMap<Int, MyData>()
dataMap.put(myInt, myData) // doesn't resolve
a 是否有 Kotlin 等价物WeakHashMap
?
我WeakHashMap
在 Kotlin 中创建了一个,由于某种原因,我无法调用put
它,它不会解决。
val dataMap: Map<Int, MyData> = WeakHashMap<Int, MyData>()
dataMap.put(myInt, myData) // doesn't resolve
a 是否有 Kotlin 等价物WeakHashMap
?
您已将 WeakHashMap 转换为只读 Map,因此您已将其限制为没有put
函数。您应该将变量类型设为 MutableMap 或将其保留为 WeakHashMap。
谢谢@Tenfour04。删除 dataMap 的类型解决了这个问题(不再编程为接口,而是设为 WeakHashMap 类型。
val dataMap = WeakHashMap<Int, MyData>()
styleDataMap.put(myInt, myData)
是在其中put
定义的,WeakHashMap
但不是直接在Map
其自身中定义的。Map 的值是只读的,因此它阻止put
在那里使用任何方法。您可以使用 reference ofWeakHashMap
也可以转换为 aMutableMap
来调用put
val styleDataMap: WeakHashMap<Int, MyData> = WeakHashMap<Int, MyData>()
styleDataMap.put(myInt, myData)
或者
val styleDataMap: Map<Int, MyData> = WeakHashMap<Int, MyData>()
styleDataMap.toMutableMap().put(myInt, myData) // doesn't resolve