【发布时间】:2016-08-22 01:05:24
【问题描述】:
我正在使用 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 查询得到了这个代码 sn-p 的答案。
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
}
【问题讨论】: