如何将kotlin映射分配给java库映射 . 这为Object和Any提供了类型不匹配错误 .
我需要从我的kotlin代码映射中在第三方java库中分配java map变量 .
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 回答
Java的
Object
与Kotlin的Any
不一样,所以类型MutableMap<String, Any>
和Map<String, Object>?
不匹配,因为你不能改变第三方java库,只需将params
声明为:JavaModel.params
明确要求<String, Object>
. 你不能在那里使用KotlinAny
. Kotlin中的HashMap
也是映射类型,所以最好的方法是做一个简单的解决方法:从java扩展HashMap,例如 .
ParamsMap.java
:并像这样使用它:
我唯一能做到的就是创建一个新的Java类并在其中进行操作 . 我给params Java Map作为参数,我在Java类中进行了操作 .
Kotlin自动将任何Object表示为Any,因此它为赋值提供了类型不匹配 .