Как создать scala.collection.immutable.Seq из списка Java в Java? - PullRequest
25 голосов
/ 22 июля 2011

Я пытаюсь запустить Akka в свой Java-проект, и я застрял в небольшой проблеме с типами Seq из Scala. Я могу преобразовать свой список Java ActorRef в scala.collection.Seq, но API Akka, который я пытаюсь использовать, требует 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;
    }
}

Ответы [ 3 ]

38 голосов
/ 22 июля 2011

Вы можете использовать scala.collection.JavaConversions.asScalaBuffer для преобразования Java List в Scala Buffer, который имеет метод toList, а Scala List - это collection.immutable.Seq.

4 голосов
/ 22 июля 2011

Документация akka Java для маршрутизаторов , а также ScalaDoc для CyclicIterator предполагают, что конструктор CyclicIterator принимает List.

1 голос
/ 12 марта 2017

Вы можете использовать:

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

...