我从我的
Java代码使用了一些Scala库.我有一个集合的问题.我需要传递scala.collection.immutable.Map作为方法的参数.我可以从我的Java代码转换或构建immutable.Map,但是我不知道该怎么做.建议?
解决方法
完全可以在Java代码中使用JavaConverters – 只需要几个额外的跳转来跳过:
import java.util.HashMap; import scala.Predef; import scala.Tuple2; import scala.collection.JavaConverters; import scala.collection.immutable.Map; public class ToScalaExample { public static <A,B> Map<A,B> toScalaMap(HashMap<A,B> m) { return JavaConverters.mapAsScalaMapConverter(m).asScala().toMap( Predef.<Tuple2<A,B>>conforms() ); } public static HashMap<String,String> example() { HashMap<String,String> m = new HashMap<String,String>(); m.put("a","A"); m.put("b","B"); m.put("c","C"); return m; } }
我们可以证明这样做从Scala REPL:
scala> val jm: java.util.HashMap[String,String] = ToScalaExample.example jm: java.util.HashMap[String,String] = {b=B,c=C,a=A} scala> val sm: Map[String,String] = ToScalaExample.toScalaMap(jm) sm: Map[String,String] = Map(b -> B,c -> C,a -> A)