Scala 什么是隐式转换必须更具体

Scala 什么是隐式转换必须更具体,scala,Scala,我想将Scala值(数组[String])写入java.util.map,但错误如下所示 代码 val tagsMap = new java.util.HashMap[String, String]() val fieldsMap = new java.util.HashMap[String, Object]() // val fieldsMap = new mutable.HashMap[String,Object]() for (i <- value.indices) { fie

我想将Scala值(数组[String])写入java.util.map,但错误如下所示

代码

val tagsMap = new java.util.HashMap[String, String]()
val fieldsMap = new java.util.HashMap[String, Object]()
// val fieldsMap = new mutable.HashMap[String,Object]()

for (i <- value.indices) {
  fieldstuple(i)._2 match {
    case "int" => fieldsMap.put(fieldsArr(i), Integer.valueOf(value(i)))
    case "varchar" => fieldsMap.put(fieldsArr(i), value(i))
    case "float" => fieldsMap.put(fieldsArr(i),lang.Float.parseFloat(value(i)) )
    case "double" => fieldsMap.put(fieldsArr(i), lang.Double.parseDouble(value(i)))
    case "boolean" => fieldsMap.put(fieldsArr(i), lang.Boolean.parseBoolean(value(i)))
    case "datetime" => fieldsMap.put(fieldsArr(i), value(i))
    case _ => fieldsMap.put(fieldsArr(i), value(i))
  }
}

它只是告诉您不能将数字类型的值放入对象类型为值的HashMap,因为Float Double和etc不是对象

您应该将HashMap初始化更改为

val fieldsMap = new java.util.HashMap[String, Any]()

您需要在代码中使用Java类型吗?在Scala中操作Java类型总是很棘手的。在可能的情况下,在调用Java代码时使用Scala数据类型并转换为Java。您的答案是可以的,但是follow Java方法需要接受util.HashMap[String,Object]作为参数
val fieldsMap = new java.util.HashMap[String, Any]()