【问题标题】:Scala iterable and java iterableScala 可迭代和 java 可迭代
【发布时间】:2015-01-04 23:51:08
【问题描述】:

我正在使用 scala 开发一个 java 库。

我得到了这样的东西:

def myFunc(): Thing[Iterable[T]] = {
  // call java lib for the result
  ...
  javaResult  // Problem: it's Thing[java.lang.Iterable[T]]
}

所以你看到问题是java事物的返回类型是Thing[java.lang.Iterable[T]]。我试过导入 scala.collection.JavaConverters._ 但这不起作用。请注意,我无权访问 java 库,也无法提取该可迭代对象然后用 scala 重构一个 Thing 对象。

我可以将返回类型注释为java.lang.Iterable,但由于 scala 和 java 旨在协同工作,我想知道是否有某种方法可以优雅地解决这个问题?

【问题讨论】:

  • 如果没有Thing 的详细信息,您将无法解决此问题。如果它是 monad(或类似 monad 的结构),只需调用 map(_.asScala) 即可。
  • Nitpick:Scala 旨在与 Java 一起使用,反之亦然;)

标签: java scala compatibility


【解决方案1】:

“旨在协同工作”意味着您可以返回Thing[java.lang.Iterable[T]]。 它看起来确实是你唯一的选择。

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 2016-06-15
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2016-12-25
    • 2015-07-23
    相关资源
    最近更新 更多