错误:类型推断失败

时间:2017-08-05 07:23:44

标签: android hashmap kotlin

我正在尝试编写一个Android Kotlin应用程序,但我得到了以下错误。我哪里出错了?

这就是我声明我的HashMap的方式:

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

错误:

  

类型推断失败。没有足够的信息来推断参数K in   构造函数HashMap。请明确说明

3 个答案:

答案 0 :(得分:3)

您必须指定键的类型和地图的值。像这样:

mParent = HashMap<String, String>()

或者像这样:

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

将*作为通用参数表示允许任何类型的对象作为键和值。因此,当您创建HashMap时,编译器不知道键和值的确切类型 - 它无法进行类型推断。这就是你得到这样的错误的原因。

建议:Kotlin习语建议使用mapOf()mutableMapOf()方法创建地图而不是使用Java样式HashMap():

mParent = mutableMapOf<String, String>()

答案 1 :(得分:0)

你可以在kotlin中使用这样的HashMap ....

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

答案 2 :(得分:0)

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

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

在你的情况下,编译器不确定那些aestriks意味着什么。