Any в hashmap kotlin

Есть класс

data class Test(
    var fields: HashMap<String, Any>?
) {
    constructor(name: String?) : this(
       fields = if (name != null ) hashMapOf("IVANOV" to name) else null
    )
}

При создании Test("IVAN") получаю ошибку

Error:(17, 46) Kotlin: Type mismatch: inferred type is kotlin.collections.HashMap<String, String> /* = java.util.HashMap<String, String> */ but kotlin.collections.HashMap<String, Any>? /* = java.util.HashMap<String, Any>? */ was expected в чем тут проблема? если проделать такое в вызове обычного метода - все хорошо,но в конструкторе - нет


Ответы (1 шт):

Автор решения: IR42

Видимо был баг в компиляторе, в kotlin 1.4 не воспроизводится https://pl.kotl.in/BGpzsGMke

В версиях ниже нужно явно указать типы мапы

fields = if (name != null ) hashMapOf<String, Any>("IVANOV" to name) else null

Иначе она получается HashMap<String, String>, которую нельзя присвоить в HashMap<String, Any> (Инвариантность)

→ Ссылка