我如何在 Kotlin 的 WeakHashMap 上调用 "put"?

How do I call "put" on a WeakHashMap in Kotlin?

我在 Kotlin 中创建了一个 WeakHashMap,但出于某种原因,我无法调用 put 它,它无法解析。

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

是否有 WeakHashMap 的 Kotlin 等价物?

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

putWeakHashMap 中定义,但不直接在 Map 本身中定义。 Map 的值是只读的,因此它可以防止在那里使用任何 put 方法。您可以使用 WeakHashMap 的引用,也可以转换为 MutableMap 来调用 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

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

val dataMap = WeakHashMap<Int, MyData>()
styleDataMap.put(myInt, myData)