31

我试图让 Akka 进入我的 Java 项目,但我对 Scala 的 Seq 类型的一个小问题感到困惑。我能够将我的 ActorRef 的 Java 列表转换为 scala.collection.Seq,但我尝试使用的 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;
    }
}
4

4 回答 4

45

您可以使用scala.collection.JavaConversions.asScalaBuffer将 Java 转换为具有方法的ListScala ,而 Scala是.BuffertoListListcollection.immutable.Seq

于 2011-07-22T06:50:45.210 回答
4

路由器的akka Java 文档以及 CyclicIterator 的ScalaDoc都建议 CyclicIterator 构造函数采用 List。

于 2011-07-22T02:25:15.587 回答
2

你可以试试这个:

scala.collection.JavaConverters.asScalaIteratorConverter(list.iterator()).asScala().toSeq();
于 2019-11-06T20:33:21.263 回答
1

您可以使用:

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

于 2017-03-12T08:19:22.570 回答