從scala 2.12版本開始,Scala官方廢除了“scala.collection.JavaConversions”,改用“scala.collection.JavaConverters”。如果繼續強行使用,則會提示如下錯誤:
java.lang.NoSuchMethodError:
scala.collection.JavaConversions$.deprecated$u002
0propertiesAsScalaMap(Ljava/util/Properties;)
Lscala/collection/mutable/Map;
相比于“JavaConversions”的“as*”方法,“JavaConverters”的名稱更加直接——“asScala”,示例如下:
def iterMap(params: Map[String, String]): Unit = {
params.foreach(kv => print(kv._1))
}
// 聲明java.utils.Properties變量
val props = new Properties()
props.put("name", "yiifaa")
// 引入JavaConverters
import scala.collection.JavaConverters._
// 将Java類型轉換為Scala類型
iterMap(props.asScala.toMap)
上面的代碼“props.asScala.toMap”的了解步驟如下:
- asScala将Properties轉換為Scala的可變Map(mutable.Map),這與函數聲明要求的不變Map不一緻;
- toMap将可變Map轉換為不變Map;