我正在尝试让Akka进入我的Java项目,但我被Scala中的Seq类型的一个小问题所困扰。我可以将我的ActorRef的Java列表转换为scala.Collection tion.Seq,但我尝试使用的Akka API需要一个scala.cipltion.immuable.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;
}
}
5条答案
按热度按时间vsmadaxz1#
您可以使用
scala.collection.JavaConversions.asScalaBuffer
将JavaList
转换为ScalaBuffer
,它具有toList
方法,而ScalaList
是collection.immutable.Seq
。z8dt9xmd2#
akka Java documentation for routers和CyclicIterator的ScalaDoc都建议CyclicIterator构造函数接受列表。
v6ylcynt3#
您可以尝试以下操作:
vnzz0bqm4#
您可以使用:
scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()
dauxcl2d5#
由于
scala
2.12.0
JavaConversions
被标记为不推荐使用所以应该使用
JavaConverters
或者习惯用语