不会将java.util.List隐式转换为Scala List
发布时间:2020-05-22 15:27:03 所属栏目:Java 来源:互联网
导读:我对 scala.collection. JavaConversions有非常基本的问题.我会期望以下代码将工作,但从java.util.List [String]到Scala List [String]的隐式转换不会发生.为什么? import collection.JavaConversions._import java.utilclass Test { def getStrings(
|
我对 scala.collection. JavaConversions有非常基本的问题.我会期望以下代码将工作,但从java.util.List [String]到Scala List [String]的隐式转换不会发生.为什么? import collection.JavaConversions._
import java.util
class Test {
def getStrings() : List[String] = {
val results : java.util.List[String] = new java.util.ArrayList[String]()
results
}
}
我收到compi的消息 type mismatch;
found : java.util.List[String]
required: scala.collection.immutable.List[String]
results
^
解决方法转换为:def getStrings() : Seq[String] = {
val results : java.util.List[String] = new java.util.ArrayList[String]()
results
}
这是因为,转换的隐式函数定义为: implicit def asScalaBuffer[A](l: java.util.List[A]): mutable.Buffer[A] 它返回一个mutable.Buffer而不是scala.collection.immutable.List.因此错误.所以替代方法是使用Seq而不是List或将其转换为immutable.List,如下所示: def getStrings() : List[String] = {
val results = new java.util.ArrayList[String]()
results.toList
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
