我创建了以下课程:
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/