java - Scala Collections - 使用转换器将 Any 类型转换为 Seq[T]

标签 java scala sbt scala-collections

我是 Scala 新手,我正在尝试用 JavaConverters 替换已弃用的 JavaConversions 库。原始代码如下所示:

addresses = {
      import scala.collection.JavaConversions._
      config.getConfigList("amqp.addresses").map(address ⇒
        Address(
          host = address.foo()
        ))(collection.breakOut)
}

当我将上面代码中的 JavaConversions 替换为 JavaConvertors 时,出现编译错误:

Type mismatch: expected Seq[Address], actual: Any

我理解异常的含义,但我不确定如何转换上面的代码以使其返回 Seq[Address] 而不是 Any。另外,转换器中有一个 asJava 方法可以将 scala 列表转换为 java 列表,但不知道如何在这里使用它。想法?

最佳答案

您需要声明最终类型并显式地将 Java 集合转换为 Scala 集合 (asScala):

addresses: Seq[Address] = {
      import scala.collection.JavaConverters._
      config.getConfigList("amqp.addresses").asScala.map(address ⇒
        Address(
          host = address.foo()
        ))(collection.breakOut)
}

关于java - Scala Collections - 使用转换器将 Any 类型转换为 Seq[T],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46672755/

相关文章:

scala - Scala 序列的通用函数,如 `Seq` 、 `IndexedSeq` 、 `List`

scala - 让 Scala 编译器在第一个错误时停止

sbt - 如何知道 sbt 中已安装插件的可用任务和设置?

java - 如何在 Play 2.2.x 的 dist 任务中禁用 scaladoc 生成(使用 build.sbt)?

java - 我的 ShaderProgram 不工作

java - 如何在 BIRT 报告中集成 Google map

scala - 这种类型参数语法无法编译的原因是什么?

scala - 澄清 Scala 中的跨版本行为

java - 如何返回代码顶部?或许?

java - XxxController_Roo_GvNIXDatatables.aj 未针对 Xxxcontroller.java 类中的更改进行更新