错误:类型推断失败
问题描述:
我想写一个android kotlin应用程序,但我得到了以下错误。我哪里错了?错误:类型推断失败
这是怎么了我宣布我的HashMap:
var mParent: MutableMap<*, *> ?= null
mParent = HashMap()
错误:
type inference failed. Not enough information to infer parameter K in constructor HashMap. Please specify it explicitly
答
你必须指定类型的地图的关键和价值。事情是这样的:
mParent = HashMap<String, String>()
或者这样:
var mParent: MutableMap<String, String>? = null
mParent = HashMap()
有*的泛型参数意味着,任何类型的对象允许作为键和值。所以当你创建HashMap时,编译器不知道键和值的确切类型 - 它不能输入推论。这就是为什么你会得到这样的错误。
建议:科特林成语建议使用mapOf()
或mutableMapOf()
方法来创建地图,而不是使用Java风格的HashMap():
mParent = mutableMapOf<String, String>()
答
可以在科特林使用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是什么意思。