需要调用一个apiMap<String, String>
fun api.log(map: Map<string, String>
但是密钥只能来自已注册的密钥,因此为已注册的密钥定义了一个枚举:
enum class RegisteredKey {
NONE, ZOOM
}
并首先构建 EnumMap<> 以强制执行键类型:
var enumParamMap: EnumMap<RegisteredKey, String> = EnumMap<RegisteredKey, String>(RegisteredKey::class.java)
enumParamMap.put(RegisteredKeys.NONE, "0")
enumParamMap.put(RegisteredKeys.ZOOM, "1")
doLog(enumParamMap)
问题1,有没有构造函数可以直接用数据构建enumMap?
然后需要将 EnumMap 转换为 Map<> 以便 api.log() 接受它
fun doLog(enumParamMap: EnumMap<RegisteredKey, String>) {
val map: MutableMap<String, String> = mutableMapOf()
for (enum in enumParamMap.entries) {
map.put(enum.key.name, enum.value)
}
api.log(map)
}
问题2:有没有更简单的方法将 enumMap 映射到常规映射?