我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