1

WeakHashMap在 Kotlin 中创建了一个,由于某种原因,我无法调用put它,它不会解决。

val dataMap: Map<Int, MyData> = WeakHashMap<Int, MyData>()
dataMap.put(myInt, myData) // doesn't resolve

a 是否有 Kotlin 等价物WeakHashMap

4

3 回答 3

7

您已将 WeakHashMap 转换为只读 Map,因此您已将其限制为没有put函数。您应该将变量类型设为 MutableMap 或将其保留为 WeakHashMap。

于 2021-01-20T19:41:05.157 回答
0

谢谢@Tenfour04。删除 dataMap 的类型解决了这个问题(不再编程为接口,而是设为 WeakHashMap 类型。

val dataMap = WeakHashMap<Int, MyData>()
styleDataMap.put(myInt, myData)
于 2021-01-20T20:58:56.050 回答
0

是在其中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
于 2021-01-20T19:47:13.410 回答