You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建包含全部枚举键的Kotlin Map并保证空安全?

如何创建包含所有枚举键的Map并保证空安全?

我想要创建一个包含某枚举所有键的Map,同时保证空安全。目前我写的代码是这样的:

enum class Product { A, B }

private val _products = mapOf<Product, MutableLiveData<Int>>(
    Product.A to MutableLiveData(),
    Product.B to MutableLiveData()
)

val products = mapOf<Product, LiveData<Int>>(
    Product.A to _products[Product.A]!!,
    Product.B to _products[Product.B]!!
)

更新

感谢@Michael提供的思路,现在可以简化Map的构造代码:

private val _products = Product.values().associateWith { MutableLiveData<Int>() }
val products: Map<Product, LiveData<Int>> = _products

这样解决了构造时确保包含所有枚举键的问题,但在获取值的时候还是不得不使用非空断言:

val a: Int = products[Product.A]!!.value

内容的提问来源于stack exchange,提问作者yaugenka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:55:29