2011-07-22 1 views
23

J'essaie d'obtenir Akka dans mon projet Java, et je suis accroché sur un petit problème avec le (s) type (s) Seq de Scala. Je suis capable de convertir ma liste Java d'ActorRef en scala.collection.Seq, mais l'API Akka que j'essaie d'utiliser nécessite une scala.collection.immutable.Seq. Comment puis-je en faire un?Comment créer un scala.collection.immutable.Seq à partir d'une liste Java en Java?

code:

static class Router extends UntypedLoadBalancer { 
    private final InfiniteIterator<ActorRef> workers; 

    public Router(List<ActorRef> workers) { 
     Seq workerSeq = asScalaBuffer(workers); 

     // how to get from the scala.collection.Seq above to the instance of 
     // scala.collection.immutable.Seq required by CyclicIterator below? 
     this.workers = new CyclicIterator<ActorRef>(); 
    } 

    public InfiniteIterator<ActorRef> seq() { 
     return workers; 
    } 
} 

Répondre

33

Vous pouvez utiliser scala.collection.JavaConversions.asScalaBuffer pour convertir Java List à une Scala Buffer, qui a une méthode toList et une Scala List est un collection.immutable.Seq.

+0

Choisi celui-ci comme il a répondu à ma question spécifique de plus près. La ligne avec laquelle je me suis retrouvé était: new CyclicIterator ((Seq ) asScalaBuffer (workers) .toList()); – spieden

1

Vous pouvez utiliser:

scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()

Questions connexes