首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin:不能将键值放入ConcurrentHashMap。

Kotlin:不能将键值放入ConcurrentHashMap。
EN

Stack Overflow用户
提问于 2022-11-03 09:59:48
回答 1查看 28关注 0票数 1

我试图在Kotlin失败中为ConcurrentHashMap添加一个键值。编译器告诉我:No set method providing array access

代码语言:javascript
运行
复制
class MysqlDataProviderProxy() {
    private val NULL: Any = Object()
    var unionMaps: Map<Long, Any> = ConcurrentHashMap()


    fun init() {
        unionMaps[1] = NULL // No set method providing array access
    }
}

我不知道这是什么意思。ConcurrentHashMap在Kotlin中是不可变的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-05 16:27:49

就像清洁工说的那样,你在unionMap上有错误的类型。

在Kotlin中是不可变的ConcurrentHashMap

不是,但与Java /List/Set不同的是,它们具有可变和不变的接口,而接口MapListSet是不变的变体。

你想要这个

代码语言:javascript
运行
复制
    class MysqlDataProviderProxy() {
        private val NULL: Any = Object()
        var unionMaps: MutableMap<Long, Any> = ConcurrentHashMap()


       init {
            unionMaps[1] = NULL
        }
    }

另一件事是,您的原始函数init()不会在构造实例时执行,您可能需要init {...,如我前面所示。

但是,这种方法的问题是,现在您已经使映射在代理类之外是可变的,这可能不是您的意图,在这种情况下您可以这样做:

代码语言:javascript
运行
复制
    class MysqlDataProviderProxy() {
        private val NULL: Any = Object()
        var unionMaps: Map<Long, Any> = ConcurrentHashMap()

        init {
            (unionMaps as MutableMap)[1] = NULL
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74301124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档