Tengo una API Java que devuelve una lista como:
public List<?> getByXPath(String xpathExpr)
Estoy usando el siguiente código scala:
val lst = node.getByXPath(xpath)
Ahora si pruebo el azúcar de sintaxis scala como:
lst.foreach{ node => ... }
No funciona. Me sale el error:
value foreach is not a member of java.util.List[?0]
Parece que necesito convertir Java List a Scala List. ¿Cómo hacer eso en el contexto anterior?

Respuestas:
EDITAR: Tenga en cuenta que esto está en desuso desde 2.12.0. Usar en su
JavaConverterslugar. (comentario de @Yaroslav)Desde Scala 2.8, esta conversión ahora está integrada en el lenguaje usando:
trabajos.
asScalano funcionófuente
JavaConversionsestán en desuso desde 2.12.0. Usar en suJavaConverterslugar.import scala.jdk.CollectionConverters._scala-lang.org/api/2.13.x/scala/jdk/CollectionConverters$.htmlHay un práctico objeto Scala solo para esto: scala.collection.JavaConverters
Puede hacer la importación y
asScalaluego de la siguiente manera:Esto debería darle la
Bufferrepresentación de Scala que le permite lograrforeach.fuente
Estaba buscando una respuesta escrita en Java y sorprendentemente no pude encontrar ninguna solución limpia aquí. Después de un tiempo pude resolverlo, así que decidí agregarlo aquí en caso de que alguien más esté buscando la implementación de Java (¿supongo que también funciona en Scala?):
fuente
Si tiene que convertir un Java
List<ClassA>a un ScalaList[ClassB], debe hacer lo siguiente:1) Agregar
2) Use métodos
asScala,toListy luegomap3) Agregue lo siguiente al
ClassBconstructor que recibeClassAcomo parámetro:fuente
Desde scala 2.8.1 se usa
JavaConverters._para convertir colecciones de scala y Java usando los métodos asScala y asJava.import scala.collection.JavaConverters._javalist.asScalascalaSeq.asJavaver el sitio de Scala doc de relación de conversión
fuente
Atajo para convertir la lista de Java a la lista de Scala
import scala.collection.JavaConverters._myjavaList.asScala.toListfuente