簡體   English   中英

轉換Scala seq <string> 到Java列表 <string>

[英]Converting Scala seq<string> to Java List<string>

我在用Java工作。 我需要將Apache Kafka中Scala方法返回的Seq<String>轉換為Java List<String>進行處理。

我在scala.collection.convert.WrapAsJava類中找到了一種可以完成上述任務的方法seqAsJavaList

https://www.garysieling.com/scaladoc/scala.collection.convert.wrapasjava/2016/02/15/scala__collection_convert_WrapAsJava.html

我還發現了一個有用的StackOverflow查詢。

在Java代碼中將scala.collection.Seq <String>轉換為java.util.List <String>

但是,當我嘗試以下代碼時-

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
}

您可以使用scala.collection.JavaConversions

import scala.collection.JavaConversions;
import scala.collection.immutable.Seq;

Seq<String> strings = ... //
List<String> javaList = JavaConversions.seqAsJavaList(strings);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM