gpt4 book ai didi

scala - 在 scala 2.8 中使用 scala.collection.JavaConversions._ 时在 scala 和 java 集合之间自动转换

转载 作者:行者123 更新时间:2023-12-02 07:46:36 25 4
gpt4 key购买 nike

我有返回这种类型的 java API:

ArrayList[ArrayList[String]] = Foo.someJavaMethod()   

在scala程序中,我需要将上述类型作为参数发送给类型为的scala函数'bar'

def bar(param: List[List[String]]) : List[String] = {

}

所以我这样调用 bar:

val list = bar(Foo.someJavaMethod())

但这不起作用,因为我遇到编译错误。

我以为有这个导入

import scala.collection.JavaConversions._ 

将在 Java 和 Scala 集合之间进行隐式自动转换。

我也尝试过使用 like:

Foo.someJavaMethod().toList 

但这也不起作用。

这个问题的解决方案是什么?

最佳答案

首先,ArrayList 不会转换为 List,它会转换为 Scala Buffer。其次,隐式转换不会递归到集合的元素中。

您必须手动映射内部列表。要么使用隐式转换:

import collection.JavaConversions._
val f = Foo.someJavaMethod()
bar(f.toList.map(_.toList))

或者,更明确地说,如果您愿意:

import collection.JavaConverters._
val f = Foo.someJavaMethod()
bar(f.asScala.toList.map(_.asScala.toList))

关于scala - 在 scala 2.8 中使用 scala.collection.JavaConversions._ 时在 scala 和 java 集合之间自动转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com