我有这个Java界面
public interface IFoo {
List<Map<String, Object>> getMaps() throws Exception;
}
如何覆盖此方法?我试过:
import scala.collection.JavaConverters._
class Foo extends IFoo{
override def getMaps: util.List[util.Map[String,AnyRef]] = {
List(Map("A" -> "B")).asJava
}
}
但是我收到了这个编译错误
在trait IFoo类型中覆盖方法getMaps ()的java.util.List [java.util.Map [字符串,对象]]; [错误]方法 getMaps具有不兼容的类型
我可以做类似的事情:
import scala.collection.JavaConverters._
class Foo extends IFoo{
override def getMaps: util.List[util.Map[String,AnyRef]] = {
List(Map("A" -> "B".asInstanceOf[AnyRef)).asJava
}
}
但这是正确的方法吗?
答案 0 :(得分:1)
我无法重现您的overriding incompatible type
错误。但是我在方法中得到了type mismatch
,并且在这个答案中修复了麻烦。
class Foo extends IFoo{
override def getMaps: util.List[util.Map[String,AnyRef]] = {
List(Map("A" -> "B").mapValues(x => x: AnyRef).asJava).asJava
}
}
答案 1 :(得分:1)
您还需要将safe-paste
转换为Java Map
,并且有更好的方法来提供值类型:
Map