J'essaie de faire entrer Akka dans mon projet Java et je suis suspendu à un petit problème avec le (s) type (s) Seq de Scala. Je suis en mesure de convertir ma liste Java d'ActorRef en scala.collection.Seq, mais l'API Akka que j'essaie d'utiliser nécessite un scala.collection.immutable.Seq. Comment puis-je en faire un?
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;
}
}
Vous pouvez utiliser scala.collection.JavaConversions.asScalaBuffer
pour convertir Java List
en une Scala Buffer
, qui possède une méthode toList
et une Scala List
est un collection.immutable.Seq
.
La documentation Java de akka pour les routeurs ainsi que ScalaDoc pour CyclicIterator suggèrent tous deux que le constructeur CyclicIterator prend une liste.
Vous pouvez utiliser:
scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()