Тип JavaConversions не применим для аргументов (Set <String>) - PullRequest
1 голос
/ 25 апреля 2020

Вот фрагмент кода:

protected static List<String>  myclass(String mydata){

     scala.collection.Set<String> abc = <**some code that returns set of strings**(scala code)>

      List<String> 123 = JavaConversions.<?>(abc)
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Я думаю, это может быть связано с типом, который вы используете: scala.collection.Set вместо scala.collection.immutable.Set. Есть ли какая-то конкретная причина использования интерфейса вместо неизменяемой версии? https://www.scala-lang.org/api/2.9.0/scala/collection/Set.html

это сработало для меня:

scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._

scala> val s = Set("abc","def")
s: scala.collection.immutable.Set[String] = Set(abc, def)

scala> s.asJava
       ^
       warning: object JavaConverters in package collection is deprecated (since 2.13.0): Use `scala.jdk.CollectionConverters` instead
res4: java.util.Set[String] = [abc, def]

или как рекомендовано предупреждением:

scala> import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters._

scala> val s = Set.of("abc", "def")
                   ^
       error: value of is not a member of object scala.collection.immutable.Set

scala> val s = Set("abc", "def")
s: scala.collection.immutable.Set[String] = Set(abc, def)

scala> s.asJava
asJava   asJavaCollection

scala> s.asJava
res1: java.util.Set[String] = [abc, def]

scala> s.asJavaCollection
res3: java.util.Collection[String] = [abc, def]
0 голосов
/ 26 апреля 2020

Если вы можете преобразовать Set в Seq, тогда код может быть скомпилирован как

protected static List<String>  myclass(String mydata){

     scala.collection.Set<String> abc = <**some code that returns set of strings**(scala code)>

      List<String> 123 = JavaConversions.seqAsJavaList(abc.toSeq)
}
...