【问题标题】:Scala JavaConverters doesn't seem to work with collections returned by static methodsScala JavaConverters 似乎不适用于静态方法返回的集合
【发布时间】:2018-05-11 04:16:31
【问题描述】:

我在 Scala 2.11 代码中使用 Java 库。这个 Java 库有一个静态的load 方法,它返回一个Map<String,String>。 Java中的示例用法:

Map<String,String> map = Environment.load("dev");

我正试图让它在 Scala 中像这样工作:

import scala.collection.JavaConverters._

val map : Map[String,String] = Environment.load("dev").asJava

我得到一个编译器错误:

"无法将符号解析为 Java"

有什么想法吗?

【问题讨论】:

  • 地图上.asScala 的结果不是Map[String, String](不可变的),而是scala.collection.mutable.Map[String, String]
  • 当然你应该使用.asScala,而不是.asJava

标签: scala compiler-errors


【解决方案1】:

使用asScala 代替asJava

import scala.collection.JavaConverters._

val map: Map[String, String] = Environment.load("dev").asScala.toMap

【讨论】:

  • 很好,你什么时候使用asScala,什么时候使用asJava
  • @hotmeatballsoup:当您想将 Java 集合转换为 Scala 集合时,请使用 .asScala;如果要将 Scala 集合转换为 Java 集合,请使用 asJava。阅读documentation了解更多详情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多