我需要一个将
Map
转换为 Map<String, List<Int>>
的函数
目前我使用不安全的“as”,但我收到了关于它的合理警告。我想修复它。
对于列表部分,我能够实现功能
inline fun <reified T : Any> List<*>.checkItemsAre(): List<T> {
return this.filterIsInstance<T>().takeIf { it.size == this.size }
?: throw IllegalArgumentException("Can't convert raw List to type safe List")
}
但我无法资助地图的模拟。
我该如何修复它?
如果您正在寻找类似于您展示的
checkItemsAre
的 List
的内容,您可以为 Map
s 编写这样的方法。
inline fun <reified K : Any, reified V: Any> Map<*, *>.checkKeyValuesAre() =
entries.associate {
Pair(
(it.key as? K) ?: throw IllegalArgumentException(),
(it.value as? V) ?: throw IllegalArgumentException()
)
}
就像
checkItemsAre
一样,如果所有键都是Map
类型并且所有值都是K
类型,这会创建一个new
V
。