我正在尝试编写一个Android Kotlin应用程序,但我得到了以下错误。我哪里出错了?
这就是我声明我的HashMap的方式:
var mParent: MutableMap<*, *> ?= null
mParent = HashMap()
错误:
类型推断失败。没有足够的信息来推断参数K in 构造函数HashMap。请明确说明
答案 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意味着什么。