获取不可变的Scala映射有些棘手,因为collections库提供的转换返回的都是可变的返回值,您不能只使用
toMap它,因为它需要Java编译器当然不会提供的隐式参数。具有该隐式参数的完整解决方案如下所示:
import scala.collection.JavaConverters$;import scala.collection.immutable.Map;public class Whatever { public <K, V> Map<K, V> convert(java.util.Map<K, V> m) { return JavaConverters$.MODULE$.mapAsScalaMapConverter(m).asScala().toMap( scala.Predef$.MODULE$.<scala.Tuple2<K, V>>conforms() ); }}使用
JavaConversions,用Java编写转换会更简洁一些,但是从Scala方面来说,基本上每个人都希望该废话会尽快被弃用,因此即使在这里我也避免这样做。



