ScalaコンテナとJavaコンテナの相互変換
892 ワード
scala 2.12バージョンから、Scalaは「scala.collection.JavaConversions」を公式に廃止し、「scala.collection.JavaConverters」に変更した.強制的に使用し続けると、次のエラーが表示されます.
「JavaConversions」の「as*」メソッドよりも、「JavaConverters」の名前の方が直接的です.「asScala」の例は次のとおりです.
上記のコード「props.asScala.toMap」の理解手順は以下の通りです. asScalaはPropertiesをScalaの可変Map(mutable.Map)に変換し、これは関数宣言要求の不変Mapと一致しない. toMapは可変Mapを不変Mapに変換する.
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」の理解手順は以下の通りです.