【问题标题】:In java code, getting a scala.Iterable from a java.util.List在 java 代码中,从 java.util.List 获取 scala.Iterable
【发布时间】:2010-09-23 10:34:00
【问题描述】:

我知道这个'How can I convert a Java Iterable to a Scala Iterable?'

但我正在使用 Scala API 编写 java 1.4.2 代码。

如何从java.util.List 获得scala.Iterable

感谢您的建议。

【问题讨论】:

  • 是在 1.5 或 1.6 的 JVM 上运行,带有 1.4 的源代码,还是完整的 1.4?因为 Scala 2.8,afaik,不支持 Java 1.4。
  • 它在带有 JVM 1.4 的 java 1.4 上使用 scala 2.7.4 运行

标签: java scala


【解决方案1】:

你需要的一切都在scala.lang.JavaConversions

import java.util.{List => JList, ArrayList}
import scala.collection.JavaConversions._

val jul1: JList[String] = new ArrayList[String]; jul1.add("Boo!")

val sb1 = jul1.toBuffer
val ss1 = jul1.toSeq // Same result as toBuffer

这会在 sml1 中生成一个 可变 集合(Buffer)。如果您想要一个不可变集合(例如List),请转换该可变集合:

val sl1 = jul1.toList

编辑: 嗯...Java 1.4.2?那是前泛型? (我忘记了这么古老的历史......)这可能行不通,那么......你可能需要使用存在类型。

【讨论】:

  • 您知道在企业中我们有一些 pre-19700101 代码 ^^ 因此没有优雅的方法,只需循环 java Collection 并手动添加 scala Collection...
  • 你说你想要scala.Iterable。我假设您正在编写需要使用 Java 集合的 Scala 代码。
  • 事实上,我有一个 scala 方法可以在我的 java 代码中调用(来自同事编写的 scala API),它采用 scala.Iterable 参数。但是在我的源代码的这一步,我在 1.4.2 版本中有一个 java.util.List(它没有实现 java.util.Iterable,因为它在 1.4.2 中不存在)。我想用我的“not 1.5 Iterable”java.util.List 调用由 scala.Iterable 提供的 scala 方法...
  • 其实我觉得Scala不兼容Java 1.4。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2011-03-12
  • 2012-01-29
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多