Scala Cast 问题:java.lang.String 不能强制转换为 scala.runtime.Nothing



我有一个Map数组,我想解析并构造一个字符串。 这是我的地图的样子:

outerArray: Array[scala.collection.immutable.Map[String,Nothing]] = Array(Map(day -> 2018-08-04, agg_id -> 427912_1_0_1), Map(day -> 2018-09-08, agg_id -> 427912_1_0_2), Map(day -> 2018-10-20, agg_id -> 427912_1_0_3), Map(day -> 2018-10-24, agg_id -> 427912_1_0_4), Map(day -> 2019-09-04, agg_id -> 427912_1_0_5))

这是我的代码,为外部数组中的每个元素形成一个字符串

outerArray.foreach(x=>{
val agg_id_val=x.getOrElse("agg_id","").toString
val query=x.filterKeys(!_.equals("agg_id"))
.map{case (key, value) => " " +key + "=" +''' +value +'''+ " "}
.mkString(" and ")
println("query"+ query)})

运行此代码时出现以下错误。我知道这是由于内部地图中的值,但是我该如何处理?

java.lang.ClassCastException: java.lang.String cannot be cast to scala.runtime.Nothing$
at $anonfun$1$$anonfun$2.apply(<console>:28)
at $anonfun$1$$anonfun$2.apply(<console>:28)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.immutable.Map$Map2.foreach(Map.scala:137)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at $anonfun$1.apply(<console>:28)
at $anonfun$1.apply(<console>:26)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)

我正在使用 scala 2.11.8

你可能想要Map[String, Any],而不是Map[String, Nothing](当然,有意义的类型会更好(。如果你真的有Map[String, Nothing]它不能包含任何值。

最新更新