2011-07-22 14 views
23

私はJavaプロジェクトでAkkaを取得しようとしていますが、ScalaのSeqタイプの小さな問題に悩まされています。私はActorRefのJava Listをscala.collection.Seqに変換できますが、私が使用しようとしているAkka APIにはscala.collection.immutable.Seqが必要です。私はどうしたらいいですか?JavaのJavaリストからscala.collection.immutable.Seqを作成する方法は?

コード:CyclicIterator両方のための

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

あなたはtoList方法があり、ScalaのListcollection.immutable.Seqあるスカラ座BufferにJavaのListを変換するscala.collection.JavaConversions.asScalaBufferを使用することができます。

+0

私の特定の質問にもっと詳しく答えたので、これを選んだ。私が結んだ行は次のとおりです。新しいCyclicIterator ((Seq )asScalaBuffer(workers).toList()); – spieden

4

akka Java documentation for routersなどScalaDocはCyclicIteratorコンストラクタは、リストを取ることを示唆しています。

+0

感謝を。私は不変であると誤解していたと思う。具体的なタイプのための! – spieden

1

あなたは使用することができます答えを

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

関連する問題