我需要一个将投射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
for类似的东西List
,您可以为 s 编写这样的方法Map
。就像,如果所有键都是 type且所有值都是 type ,
checkItemsAre
这将创建一个新的 。Map
K
V
但是,这不会完全检查嵌套泛型,例如
Map<String, List<Int>>
. 如果你想处理这个问题,你必须添加特殊情况List
,例如如果您只想处理具有 type 值的映射
List
,我会假设映射的值是列表: