Что такое неявное преобразование должно быть более конкретным - PullRequest
0 голосов
/ 08 января 2020

Я хочу записать значение Scala (Array [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))
  }
}

Я не могу найти причину этой ошибки

Ошибка

Error:(151, 81) the result type of an implicit conversion must be more specific than AnyRef
                case "float" => fieldsMap.put(fieldsArr(i),lang.Float.parseFloat(value(i)) )
Error:(152, 85) the result type of an implicit conversion must be more specific than AnyRef
                case "double" => fieldsMap.put(fieldsArr(i), lang.Double.parseDouble(value(i)))
Error:(153, 88) the result type of an implicit conversion must be more specific than AnyRef
                case "boolean" => fieldsMap.put(fieldsArr(i), lang.Boolean.parseBoolean(value(i)))
Error:(151, 81) type mismatch;
 found   : Float
 required: Object
                case "float" => fieldsMap.put(fieldsArr(i),lang.Float.parseFloat(value(i)) )
Error:(152, 85) type mismatch;
 found   : Double
 required: Object
                case "double" => fieldsMap.put(fieldsArr(i), lang.Double.parseDouble(value(i)))
Error:(153, 88) type mismatch;
 found   : Boolean
 required: Object
                case "boolean" => fieldsMap.put(fieldsArr(i), lang.Boolean.parseBoolean(value(i)))

1 Ответ

0 голосов
/ 08 января 2020

Это просто говорит о том, что вы не можете поместить значения числового типа c в HashMap с типом значений объекта, поскольку Float Double и et c не являются объектами

. Вам следует изменить инициализацию HashMap на

val fieldsMap = new java.util.HashMap[String, Any]()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...