JavaプロジェクトでAkkaを実行させようとしています。ScalaのSeqタイプの小さな問題でハングアップしています。変換できます= Java scala.collection.SeqへのActorRefのリストですが、使用しようとしているAkka APIにはscala.collection.immutable.Seqが必要です。どうすれば作成できますか?
コード:
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;
}
}
scala.collection.JavaConversions.asScalaBuffer
を使用して、Java List
をScala Buffer
に変換できます。これには、toList
メソッドがあり、Scala List
はcollection.immutable.Seq
です。
akka Javaルーターのドキュメント および CyclicIterator のScalaDocはどちらも、CyclicIteratorコンストラクターがリストを取ることを示唆しています。
以下を使用できます。
scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()