2011-07-22 45 views
23

我試圖讓Akka進入我的Java項目,並且我在Scala的Seq類型的一個小問題上掛了。我能夠將我的ActorRef的Java列表轉換爲scala.collection.Seq,但我試圖使用的Akka API需要scala.collection.immutable.Seq。我該如何製作一個?如何從Java中的Java列表創建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; 
    } 
} 

回答

33

您可以使用scala.collection.JavaConversions.asScalaBuffer到Java List轉換爲斯卡拉Buffer,其中有一個toList方法和斯卡拉Listcollection.immutable.Seq

+0

選擇了這一個,因爲它更仔細地回答了我的具體問題。我結束的一行是:新的CyclicIterator ((Seq )asScalaBuffer(workers).toList()); – spieden

1

您可以使用:

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