Сначала убедитесь, что list
имеет тип java.util.List[SVNDirEntry]
. Для этого используйте приведение:
list.asInstanceOf[java.util.List[SVNDirEntry]]
После этого неявное преобразование будет разрешено для вас, если вы импортируете объект JavaConversions
. В объекте JavaConversions
существует неявное преобразование в последовательность Scala. Посмотрите следующий пример со списком строк, передаваемых методу, который ожидает последовательность Scala:
scala> val jvlist: java.util.List[_] = new java.util.ArrayList[String]
jvlist: java.util.List[_] = []
scala> jvlist.asInstanceOf[java.util.List[String]]
res0: java.util.List[String] = []
scala> import collection.JavaConversions._
import collection.JavaConversions._
scala> def perform(scalaseq: Seq[String]) = println("ok")
perform: (scalaseq: scala.collection.Seq[String])Unit
scala> perform(res0)
ok
Эти преобразования не копируют элементы - они просто создают оболочку вокруг коллекции Java. Обе версии указывают на одни и те же базовые данные. Таким образом, в JavaConversions
нет неявного преобразования в неизменяемые списки Scala из изменяемых списков Java, поскольку это позволило бы изменить содержимое коллекции Scala, которая гарантированно будет неизменной.
Вкратце - предпочитайте от Seq[...]
до List[...]
при определении параметров для методов, если вы можете использовать менее специфичный интерфейс (как в perform
выше). Или напишите свою собственную функцию, которая выполняет преобразование путем копирования элементов.