我尝试将MultiMap特征与HashMap混合在一起,如下所示:
val children:MultiMap[Integer, TreeNode] =
new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]MultiMap特征的定义如下:
trait MultiMap[A, B] extends Map[A, Set[B]]这意味着A & B类型的MultiMap就是A & Set[B]类型的Map,至少在我看来是这样。但是,编译器会抱怨:
C:\...\TestTreeDataModel.scala:87: error: illegal inheritance; template $anon inherits different type instances of trait Map: scala.collection.mutable.Map[Integer,scala.collection.mutable.Set[package.TreeNode]] and scala.collection.mutable.Map[Integer,Set[package.TreeNode]]
new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]
^ one error found 似乎泛型又把我给绊倒了。
发布于 2008-09-08 18:59:25
我不得不导入scala.collection.mutable.Set。似乎编译器认为HashMap[Integer, Set[TreeNode]]中的集合是scala.collection.Set。MultiMap定义中的集合为scala.collection.mutable.Set.
发布于 2008-09-15 16:24:13
这可能很烦人,Scala集合中的名称重载是它的一大弱点。
无论如何,如果您导入了scala.collection._,您可能会将您的HashMap类型编写为:
new HashMap[ Integer, mutable.Set[ TreeNode ] ]https://stackoverflow.com/questions/50373
复制相似问题