【问题标题】:How to convert scala.collection.Map<Object, Object> to Java's Map<Integer, Integer>?如何将 scala.collection.Map<Object, Object> 转换为 Java 的 Map<Integer, Integer>?
【发布时间】:2015-02-01 07:48:28
【问题描述】:
private static Map<Integer, Integer> scalaIntsMapToJavaMap(scala.collection.Map<Object, Object> map) {
    return (Map<Integer, Integer>) JavaConverters.mapAsJavaMapConverter(map);
}

当我在 sbt 中运行这个 Java 文件时,我得到以下异常。

Exception in thread "main" java.lang.ClassCastException: scala.collection.convert.Decorators$AsJava cannot be cast to java.util.Map
        at SomeClass.scalaIntsMapToJavaMap(SomeClass.java:92)
        at SomeClass.main(SomeClass.java:57)
java.lang.RuntimeException: Nonzero exit code returned from runner: 1
        at scala.sys.package$.error(package.scala:27)

【问题讨论】:

  • 您运行什么 Java 文件?您只列出了一个函数。请给出一个完整的例子

标签: java scala-2.11


【解决方案1】:

在谷歌上搜索了一下,我发现了这个:

private static Map<Integer, Integer> scalaIntsMapToJavaMap(scala.collection.Map<Object, Object> map) {
  return (Map<Integer, Integer>) JavaConverters$.MODULE$.mapAsJavaMapConverter(map);
}

但是,更优雅的解决方案是在 Scala 代码中公开您的方法的 Java 版本。从 scala 代码中,您可以使用:

import collection.JavaConverters._
val map: Map[Int, Int] = Map(1 -> 2, 2 -> 3)
def getMap(): java.collection.Map[Integer, Integer] = {
  map.asJava()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2019-12-14
    • 2012-10-21
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多