【问题标题】:Converting from scala.collection.immutable.List to a java.util.List in java [duplicate]在java中从scala.collection.immutable.List转换为java.util.List [重复]
【发布时间】:2023-03-12 06:10:01
【问题描述】:

我目前在 Java 运行时谷歌云数据流中工作。我正在使用的 scala sdk 将我正在使用的属性显示为不可变列表:https://github.com/snowplow/snowplow-scala-analytics-sdk/blob/master/src/main/scala/com.snowplowanalytics.snowplow.analytics.scalasdk/Event.scala#L91

final List 上下文

是否有人对如何正确地将其转换/转换为 Java 列表有任何指示?我发现的大多数示例都是在 Scala 运行时与 Java 运行时中进行的。

我原以为 JavaConverters 包会在这里帮助我,但是这些方法似乎并不期望一个不可变的 scala 列表。

下面示例中的 e 是链接 sdk 中的 Event 实例。

List<SelfDescribingData<Json>> list = JavaConverters.asScalaBufferConverter(e.contexts()).asScala().toList();
for (SelfDescribingData<Json> t : list) {
    LOG.info(t.toString());
}

【问题讨论】:

    标签: java scala scala-java-interop


    【解决方案1】:

    JavaConverters.asScalaBufferConverter:

    添加一个 asScala 方法,将 Java 列表隐式转换为 Scala 可变缓冲区

    要将scala.collection.immutable.Listscala.collection.immutable.Seqscala.collection.Seq 的子类型)转换为java.util.List,您可以调用JavaConverters.asJava

    java.util.List<SelfDescribingData<Json>> list = JavaConverters.asJava(e.contexts().data())
    

    我发布的代码是在 Scala 2.13 集合重写之后。对于旧版本的 Scala,等效函数是 JavaConverters.seqAsJavaList

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2011-02-22
      相关资源
      最近更新 更多