我创建了以下类:
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]
的实例?
更新 一位评论者指出我可以覆盖HashMap
上的clone
方法。没有人反对这样做,但似乎我应该能够在不重新实现实际克隆过程的情况下这样做。
最佳答案
HashMap
类返回HashMap
对象,无论是否扩展。如果要更改返回值,还必须扩展 MapLike
。
关于scala - 如何将 HashMap 转换为 Scala 中的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21386854/