2015-02-01 2 views
0
private static Map<Integer, Integer> scalaIntsMapToJavaMap(scala.collection.Map<Object, Object> map) { 
    return (Map<Integer, Integer>) JavaConverters.mapAsJavaMapConverter(map); 
} 

Когда я запускаю этот файл Java в sbt, я получаю следующее исключение.Как преобразовать scala.collection.Map <Object, Object> в карту Java <Integer, Integer>?

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) 
+0

Какой файл Java вы используете? Вы указали только одну функцию. Пожалуйста, покажите полный пример –

ответ

1

После прибегая к помощи немного я нашел это:

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

Однако более элегантное решение выставить Java версию метода в Scala коде. Из кода scala вы можете сделать это, используя:

import collection.JavaConverters._ 
val map: Map[Int, Int] = Map(1 -> 2, 2 -> 3) 
def getMap(): java.collection.Map[Integer, Integer] = { 
    map.asJava() 
} 
Смежные вопросы