如何将kotlinMap分配给java库Map。这会导致Object和Any的类型不匹配错误。
我需要从我的kotlin代码Map表中分配第三方java库中的javaMap变量。
val model = JavaModel() //from 3rd party java library
val params:MutableMap<String, Any> = HashMap()
params.put("key","value")
model.params = params //gives error below
类型不匹配:推断的类型为MutableMap<String, Any>
,但应为Map<String, Object>?
3条答案
按热度按时间kokeuurv1#
Java的
Object
与Kotlin的Any
不同,因此类型MutableMap<String, Any>
和Map<String, Object>?
不匹配,因为您无法更改第三方Java库,只需将params
声明为:d7v8vwbk2#
JavaModel.params
明确要求<String, Object>
。您不能在此处使用KotlinAny
。此外,Kotlin中的HashMap
是Map类型,因此您最好执行简单的解决方法:从java扩展HashMap,例如
ParamsMap.java
:并像这样使用它:
qnzebej03#
我唯一能做到的就是创建一个新的Java类,然后在类中进行操作,我给予params,Java Map,作为参数,然后在类中进行操作。
Kotlin会自动将任何Object作为Any,因此它会为赋值指定类型不匹配。