j'ai Java POJO que j'utilise dans une application Scala:Scala ne peut pas sembler convertir les cartes en Java mutables Plans
public class AppRuntimeContext {
// Lots of stuff...
public Map<Object,Object> contextMap;
// Getters & setters, ctors, etc.
}
Dans mon application Scala:
val ctx : AppRuntimeContext = new AppRuntimeContext()
val ctxMap : Map[String,Fizz] = Map()
// Some code that populates 'ctxMap'
ctx.setContextMap(ctxMap)
Cette produit une erreur de compilation sur la méthode setter:
type mismatch; found : scala.collection.mutable.Map[String,com.me.myapp.Fizz] required: java.util.Map[Object,Object]
donc j'essaie convertir ctxMap
un java.util.Map
en ajoutant la fo déclaration d'importation llowing:
import collection.JavaConversions._
Et puis en changeant l'appel setter à:
ctx.setContextMap(mapAsJavaMap(ctxMap))
Cependant quand je fais cela, je reçois encore une erreur de compilation:
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)
Toutes les idées ce qui est provoquant cette erreur et quelle est la solution?
Notez que l'utilisation de 'JavaConversions' est obsolète. Utilisez 'JavaConverters' et l'appel explicite' .asScala'/'.asJava' à la place. – maasg