Ich habe eine Java POJO, die ich in einer Scala App bin mit:Scala kann nicht scheinen, veränderbare Karten in Java Karten zu konvertieren
public class AppRuntimeContext {
// Lots of stuff...
public Map<Object,Object> contextMap;
// Getters & setters, ctors, etc.
}
In meiner Scala App:
val ctx : AppRuntimeContext = new AppRuntimeContext()
val ctxMap : Map[String,Fizz] = Map()
// Some code that populates 'ctxMap'
ctx.setContextMap(ctxMap)
Diese Also versuche ich, durch Zugabe der fo ctxMap
zu einem java.util.Map
Umwandlung
type mismatch; found : scala.collection.mutable.Map[String,com.me.myapp.Fizz] required: java.util.Map[Object,Object]
: erzeugt einen Compiler-Fehler auf der Setter-Methode llowing Import-Anweisung:
import collection.JavaConversions._
und dann durch den Setter Aufruf Wechsel zu:
ctx.setContextMap(mapAsJavaMap(ctxMap))
Allerdings, wenn ich das tue ich immer noch einen Compiler-Fehler:
type mismatch; found : scala.collection.mutable.Map[String,com.me.myapp.Fizz] required: scala.collection.Map[Object,Object] Note: String <: Object, but trait Map is invariant in type A. You may wish to investigate a wildcard type such as _ <: Object. (SLS 3.2.10)
Irgendwelche Ideen, was ist verursacht diesen Fehler und was ist das Problem?
Beachten Sie, dass die Verwendung von 'JavaConversions 'veraltet ist. Verwenden Sie stattdessen 'JavaConverters' und den expliziten Aufruf' .asScala'/'.asJava'. – maasg