如何进行转换?
var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition());
request.setAttributeDefinitions(attrDefs);
我读过很多不同的places我们应该导入这个:
import scala.collection.JavaConverters._
它应该可以工作,但它不能编译。
我收到了这个错误:
found : scala.collection.immutable.Vector[AttributeDefinition][scalac]
required: java.util.Collection[AttributeDefinition]
我正在使用 Scala 2.9.3 。
答案 0 :(得分:2)
您需要致电asJavaCollection
进行转换,这应该有效:
import scala.collection.JavaConverters._
var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition())
request.setAttributeDefinitions(attrDefs.asJavaCollection)
作为替代方案,您可以使用import scala.collection.JavaConversions._
来调用asJavaCollection
。但是,我发现它使得代码在调用方法时更具可读性。这是另一个例子:
import scala.collection.JavaConversions._
var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition())
request.setAttributeDefinitions(attrDefs)
答案 1 :(得分:1)
从Scala 2.9开始,您应该更喜欢用于转换Java的隐蔽包< - > Scala集合:
val attr = new java.util.Vector[String]()
scala.collection.convert.wrapAsScala.collectionAsScalaIterable(attr) // it's implicit
所以导入wrapAsScala:
import collection.convert.wrapAsScala._
var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition())
request.setAttributeDefinitions(attrDefs)