scala - 如何将 HashMap 转换为 Scala 中的子类?

标签 scala types casting

我创建了以下类:

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/

相关文章:

scala - sbt test-only 特定测试

Scala 类型约束来检查参数值

java - 使用通用类型参数转换异常 : Right way to do it?

Excel VBA 集合和自定义数据类型

arrays - 需要不必要的 postgres 数组转换吗?

c++ - 请解释这个执行强制转换和类型检查的硬核宏

scala - 使用 Shapeless 对 arity 进行抽象

scala - 值 |@|不是 cats.data.Validated 的成员

scala - 播放2配置文件: Reading a list of string variable

c - 文字常量与同值变量左移执行的差异