簡體   English   中英

Scala 轉換問題:java.lang.String 無法轉換為 scala.runtime.Nothing

[英]Scala Cast Issues : java.lang.String cannot be cast to scala.runtime.Nothing

我有一個 Map 數組,我想解析並構造一個字符串。 這是我的 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)})

運行此代碼時出現以下錯誤。 我知道這是由於內部 map 中的值,但我該如何處理呢?

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]它不能包含任何值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM