2017-08-05 71 views
-2

我想写一个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

回答

1

你必须指定类型的地图的关键和价值。事情是这样的:

mParent = HashMap<String, String>() 

或者这样:

var mParent: MutableMap<String, String>? = null 
mParent = HashMap() 

有*的泛型参数意味着,任何类型的对象允许作为键和值。所以当你创建HashMap时,编译器不知道键和值的确切类型 - 它不能输入推论。这就是为什么你会得到这样的错误。

建议:科特林成语建议使用mapOf()mutableMapOf()方法来创建地图,而不是使用Java风格的HashMap():

mParent = mutableMapOf<String, String>() 
0

可以在科特林使用HashMap中像这样的....

val context = HashMap<String, Any>() 
context.put("world", "John") 
context.put("count", 1) 
context.put("tf", true) 
0

如果您不确定您的密钥和值是什么,那么请使用Any

var mParent: MutableMap<Any, Any> ?= mutableMapOf() 

在你的情况下,编译器不确定这些aestriks是什么意思。