ScalaコンテナとJavaコンテナの相互変換

892 ワード

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に変換する.