Scala具有自动装箱功能,因此在大多数情况下,a
scala.Long是
java.lang.Long。当值存储在像这样的集合中时,几乎总是这样
Vector。目前可以安全地
.asInstanceOf[Vector[scala.Long]]进行转换
Vector,但是将来可能会改变。
一种更安全的方法是显式转换值。Scala在
scala.Long和之间进行了隐式转换
java.lang.Long,但是它们不会转换这些类型的集合。但是,您可以将其与
map进行转换,例如
.map(Long2long),将的集合转换
java.lang.Long为的集合
scala.Long。
至于第二个问题,如果您导入
scala.collection.JavaConversions._而不是导入,
JavaConverters则会得到一组隐式转换。但是,推荐的方法是使用
JavaConverters。在您的情况下,这样做也将更加有效,因为包装器只需创建一次。
如果您真的想快速危险地玩游戏,可以编写自己的隐式转换:
implicit def convArrayList(al: ArrayList[java.lang.Long]): Vector[Long] = al.asScala.map(Long2long)(collection.breakOut)



