错误:类型推断失败
我正在尝试编写一个Android Kotlin应用程序,但是我得到了错误。 我哪里错了?
这就是我已经宣布我的HashMap:
var mParent: MutableMap<*, *> ?= null mParent = HashMap()
错误:
类型推断失败。 没有足够的信息来推断构造函数HashMap中的参数K. 请明确指定
你必须指定键的类型和地图的值。 像这样的东西:
mParent = HashMap<String, String>()
或者像这样:
var mParent: MutableMap<String, String>? = null mParent = HashMap()
具有*作为通用参数意味着,允许任何类型的对象作为键和值。 所以当你创建HashMap的时候,编译器不知道键和值的确切类型 – 它不能输入推论。 这就是为什么你得到这样的错误。
建议:Kotlin成语建议使用mutableMapOf()
mapOf()
或mutableMapOf()
方法创建一个映射,而不是使用Java风格的HashMap():
mParent = mutableMapOf<String, String>()
你可以像这样在kotlin中使用HashMap ….
val context = HashMap<String, Any>() context.put("world", "John") context.put("count", 1) context.put("tf", true)
如果您不确定您的密钥和值是什么,那么使用Any
。
var mParent: MutableMap<Any, Any> ?= mutableMapOf()
在你的情况下,编译器不确定这些aestriks是什么意思。