Eu preciso de uma função que será lançada Map
paraMap<String, List<Int>>
Atualmente uso "as" inseguro, mas recebo um aviso justo sobre isso. Eu quero consertar isso.
Para a parte da lista consegui implementar a função
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")
}
Mas não posso financiar analógico para mapa.
Como posso consertar isso?
Se você estiver procurando por algo semelhante ao
checkItemsAre
forList
s que mostrou, poderá escrever um método desse tipo paraMap
s.Assim como
checkItemsAre
, isso cria um novoMap
if todas as chaves são do tipoK
e todos os valores são do tipoV
.No entanto, isso não verificaria completamente genéricos aninhados como
Map<String, List<Int>>
. Se você quiser lidar com isso, você terá que adicionar casos especiais paraList
, por exemploSe você for lidar apenas com mapas com valores do tipo
List
, eu apenas assumiria que os valores do mapa são listas: