我创建了以下课程:

class Foo[T] extends collection.mutable.HashMap[T, Int] {...}


(该类有一些方法,但是重现此问题不需要任何方法。)

当我克隆此类的一个实例并尝试将其用作Foo的另一个实例时,出现以下类型错误:

scala> val f = new Foo[String]
f: Foo[String] = Map()

scala> val anotherF: Foo[String] = f.clone
<console>:9: error: type mismatch;
found   : scala.collection.mutable.HashMap[String,Int]
required: Foo[String]


如何将f.clone的结果强制转换为Foo[String]的实例?

更新评论者指出,我可以覆盖clone上的HashMap方法。不反对这样做,但似乎我应该能够这样做而无需重新实现实际的克隆过程。

最佳答案

HashMap类返回HashMap对象,无论是否扩展。如果要更改返回值,还必须扩展MapLike

关于scala - 如何在Scala中将HashMap转换为子类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21386854/

10-16 03:37