【发布时间】:2017-05-23 20:33:41
【问题描述】:
我有一个在 Scala 应用程序中使用的 Java POJO:
public class AppRuntimeContext {
// Lots of stuff...
public Map<Object,Object> contextMap;
// Getters & setters, ctors, etc.
}
在我的 Scala 应用中:
val ctx : AppRuntimeContext = new AppRuntimeContext()
val ctxMap : Map[String,Fizz] = Map()
// Some code that populates 'ctxMap'
ctx.setContextMap(ctxMap)
这会在 setter 方法上产生编译器错误:
类型不匹配;找到:scala.collection.mutable.Map[String,com.me.myapp.Fizz] 需要:java.util.Map[Object,Object]
所以我尝试通过添加以下导入语句将ctxMap 转换为java.util.Map:
import collection.JavaConversions._
然后通过将 setter 调用更改为:
ctx.setContextMap(mapAsJavaMap(ctxMap))
但是,当我这样做时,我仍然收到编译器错误:
类型不匹配;找到:scala.collection.mutable.Map[String,com.me.myapp.Fizz] 必需:scala.collection.Map[Object,Object] 注意:String <: object map a _>
任何想法是什么导致了这个错误以及修复方法是什么?
【问题讨论】:
-
请注意,不推荐使用
JavaConversions。改用JavaConverters和显式调用.asScala/.asJava。
标签: scala compiler-errors scala-collections type-mismatch