首页 文章

Android kotlin Object任何类型不匹配

提问于
浏览
2

如何将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 回答

  • 0

    Java的 Object 与Kotlin的 Any 不一样,所以类型 MutableMap<String, Any>Map<String, Object>? 不匹配,因为你不能改变第三方java库,只需将 params 声明为:

    val params: MutableMap<String, Object> = HashMap()
    
  • 0

    JavaModel.params 明确要求 <String, Object> . 你不能在那里使用Kotlin Any . Kotlin中的 HashMap 也是映射类型,所以最好的方法是做一个简单的解决方法:

    从java扩展HashMap,例如 . ParamsMap.java

    public class ParamsMap extends HashMap<String, Object> { }
    

    并像这样使用它:

    val model = JavaModel()
    
    val params = ParamsMap()
    params.put("key","value")
    model.params = params
    
  • 0

    我唯一能做到的就是创建一个新的Java类并在其中进行操作 . 我给params Java Map作为参数,我在Java类中进行了操作 .

    Kotlin自动将任何Object表示为Any,因此它为赋值提供了类型不匹配 .

    public class ObjectMapper {
        public static void setParam(Map<String, Object> params, String key, String value) {
            params.put(key, value);
        }
    }
    

相关问题