我如何在 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。
put
在 WeakHashMap
中定义,但不直接在 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)
我在 Kotlin 中创建了一个 WeakHashMap
,但出于某种原因,我无法调用 put
它,它无法解析。
val dataMap: Map<Int, MyData> = WeakHashMap<Int, MyData>()
dataMap.put(myInt, myData) // doesn't resolve
是否有 WeakHashMap
的 Kotlin 等价物?
您已将 WeakHashMap 转换为只读映射,因此您已将其限制为没有 put
函数。您应该将变量类型设为 MutableMap 或将其保留为 WeakHashMap。
put
在 WeakHashMap
中定义,但不直接在 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)