如何从Java中的Java List创建scala.collection.immutable.Seq?
我正试图让Akka进入我的Java项目,并且我在Scala的Seq类型上遇到了一个小问题。 我能够将我的ActorRef的Java List转换为scala.collection.Seq,但我尝试使用的Akka API需要一个scala.collection.immutable.Seq。 我该怎么做?
码:
static class Router extends UntypedLoadBalancer { private final InfiniteIterator workers; public Router(List 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(); } public InfiniteIterator seq() { return workers; } }
您可以使用scala.collection.JavaConversions.asScalaBuffer
将Java List
转换为Scala Buffer
,它具有toList
方法,Scala List
是collection.immutable.Seq
。
路由器的akka Java文档以及CyclicIterator的ScalaDoc都表明CyclicIterator构造函数采用List。
您可以使用:
scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()