Конвертировать scala.collection.immutable.Vector в java.util.Collection

2

Как я могу сделать это преобразование?

var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition());

request.setAttributeDefinitions(attrDefs);

Я читал во многих разных местах, что мы должны просто импортировать это:

import scala.collection.JavaConverters._

И он должен работать, но он не компилируется.

Я получаю эту ошибку:

 found   : scala.collection.immutable.Vector[AttributeDefinition][scalac]
 required: java.util.Collection[AttributeDefinition]

Я использую Scala 2.9.3.

Теги:
type-conversion
scala-java-interop

2 ответа

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)
  • 0
    потрясающе @ Ноа! У меня так много проблем с моим плагином Scala для Eclipse. На самом деле, он все еще показывает мне, что метод не существует, но он работает!
  • 1
    Я не уверен, насколько вы привязаны к Eclipse, но я обнаружил, что Intellij намного лучше в большинстве вещей, включая Scala :)
Показать ещё 1 комментарий
1

Начиная с Scala 2.9, вы должны предпочесть скрытый пакет для конвертирования коллекций Java <-> Scala:

val attr = new java.util.Vector[String]()
scala.collection.convert.wrapAsScala.collectionAsScalaIterable(attr) // it implicit

поэтому import wrapAsScala:

import collection.convert.wrapAsScala._
var attrDefs = Vector(new AttributeDefinition(), new AttributeDefinition())
request.setAttributeDefinitions(attrDefs)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню