简体   繁体   English

在Java代码中从scala.collection.Seq <String>转换为java.util.List <String>

[英]Convert from scala.collection.Seq<String> to java.util.List<String> in Java code

I'm calling a Scala method, from Java. 我从Java调用Scala方法。 And I need to make the conversion from Seq to List. 我需要进行从Seq到List的转换。

I can't modified the signature of the Scala method, so I can't used the asJavaCollection method from scala.collection.JavaConversions._ 我无法修改Scala方法的签名,因此我无法使用scala.collection.JavaConversions._asJavaCollection方法。

Any ideas of how can I achieve this? 有关如何实现这一目标的任何想法?

Using Scala 2.9.3 使用Scala 2.9.3

You're on the right track using JavaConversions , but the method you need for this particular conversion is seqAsJavaList : 您使用JavaConversions处于正确的轨道上,但此特定转换所需的方法是seqAsJavaList

java.util.List<String> convert(scala.collection.Seq<String> seq) {
    return scala.collection.JavaConversions.seqAsJavaList(seq);
}

Update : JavaConversions is deprecated, but the same function can be found in JavaConverters . 更新 :不推荐使用JavaConversions ,但可以在JavaConverters找到相同的函数。

java.util.List<String> convert(scala.collection.Seq<String> seq) {
    return scala.collection.JavaConverters.seqAsJavaList(seq);
}

Since Scala 2.9, you shouldn't use implicits from JavaConversions since they are deprecated and will soon be removed. 从Scala 2.9开始,您不应该使用JavaConversions implicits,因为它们已被弃用,很快就会被删除。 Instead, to convert Seq into java List use convert package like this (although it doesn't look very nice): 相反,要将Seq转换为java List使用这样的convert包(尽管它看起来不太好):

import scala.collection.convert.WrapAsJava$;

public class Test {
    java.util.List<String> convert(scala.collection.Seq<String> seq) {
        return WrapAsJava$.MODULE$.seqAsJavaList(seq);
    }
}

Since 2.12 this is the recommended way: 从2.12开始,这是推荐的方式:

public static <T> java.util.List<T> convert(scala.collection.Seq<T> seq) {
    return scala.collection.JavaConverters.seqAsJavaList(seq);
}

All other methods a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0") 所有其他方法@deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")

(In case you want to do this conversion in Scala code) (如果您想在Scala代码中执行此转换)

You can use JavaConverters to make this really easy. 您可以使用JavaConverters使这很容易。

import collection.JavaConverters._
val s: Seq[String] = ...
val list: java.util.List<String> = s.asJava

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 转换scala.collection.Seq的Java对象 <String> 到python列表 - Convert Java object of scala.collection.Seq<String> to python list 是否可以在一个类中同时实现scala.collection.Seq [T]和java.util.List [T] - Is it possible to implement both scala.collection.Seq[T] and java.util.List[T] in one class 如何将scala.collection.immutable.List [scala.collection.mutable.MutableList [String]]转换为java.util.List [java.util.List [String]] - How to convert scala.collection.immutable.List[scala.collection.mutable.MutableList[String]] to java.util.List[java.util.List[String]] 线程“main”中的异常 java.lang.NoSuchMethodError: &#39;void scala.util.matching.Regex。<init> (java.lang.String, scala.collection.Seq)&#39; - Exception in thread "main" java.lang.NoSuchMethodError: 'void scala.util.matching.Regex.<init>(java.lang.String, scala.collection.Seq)' Scala 2.8.1隐式转换为java.util.List <java.util.Map<String, Object> &gt; - Scala 2.8.1 implicitly convert to java.util.List<java.util.Map<String, Object>> 如何将Scala集合Seq [(Int,Seq [String])]转换为Java集合List [(int,List [String])]? - How to convert Scala collection Seq[(Int, Seq[String])] to Java collection List[(int, List[String])]? 将java.util.List <String>转换为java.sql.Array - Convert java.util.List<String> into java.sql.Array java.util.List元素将Java字符串化 - java.util.List element to string Java 将字符串数组转换为 java.util.List - Converting String array to java.util.List scala.collection.Seq在Java上不起作用 - scala.collection.Seq doesn't work on Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM