我在Java工作。我需要将从Apache Kafka中的Scala方法返回的Seq<String>
转换为Java List<String>
进行处理。
我找到了一个方法可以在scala.collection.convert.WrapAsJava类中执行这个技巧seqAsJavaList
。
我还发现了一个有用的StackOverflow查询。
Convert from scala.collection.Seq<String> to java.util.List<String> in Java code
但是,当我尝试以下代码时 -
public static void listTopics ()
{
ZkClient zkClient = connectToZookeeper();
ZkUtils zkUtils = zookeeperUtility(zkClient);
List<String> brokerTopics = WrapAsJava.seqAsJavaList(zkUtils.getAllTopics());
zkClient.close();
}
我得到编译器错误,无法从静态上下文引用非静态方法seqAsJavaList。
我无法实例化WrapAsJava,所以我不知道如何在这里创建非静态上下文。
StackOverflow查询对此代码段有一个答案。
import scala.collection.convert.WrapAsJava;
public class Test {
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava.seqAsJavaList(seq);
}
}
可悲的是,它引发了同样的错误。我怎样才能解决这个问题?谢谢!
(这是方法zkUtils.getAllTopics())
def getAllTopics(zkClient: ZkClient): Seq[String] = {
val topics = ZkUtils.getChildrenParentMayNotExist(zkClient, BrokerTopicsPath)
if(topics == null)
Seq.empty[String]
else
topics
}
答案 0 :(得分:3)
您可以使用scala.collection.JavaConversions
:
import scala.collection.JavaConversions;
import scala.collection.immutable.Seq;
Seq<String> strings = ... //
List<String> javaList = JavaConversions.seqAsJavaList(strings);