Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics Scala中的多重映射_Generics_Scala - Fatal编程技术网

Generics Scala中的多重映射

Generics Scala中的多重映射,generics,scala,Generics,Scala,我试图将MultiMap特性与HashMap混合,如下所示: val children:MultiMap[Integer, TreeNode] = new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode] 多重映射特性的定义是: trait MultiMap[A, B] extends Map[A, Set[B]] 这意味着a和B类型的MultiMap是a和集[B]类型的映射,或者在我看来是这样的。但是

我试图将
MultiMap
特性与
HashMap
混合,如下所示:

val children:MultiMap[Integer, TreeNode] = 
    new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]
多重映射特性的定义是:

trait MultiMap[A, B] extends Map[A, Set[B]]
这意味着
a
B
类型的
MultiMap
a
集[B]
类型的
映射,或者在我看来是这样的。但是,编译器抱怨:

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  

看来泛型又把我绊倒了。

我不得不导入
scala.collection.mutable.Set
。似乎编译器认为
HashMap[Integer,Set[TreeNode]
中的集合是
scala.collection.Set
。多重映射定义中的集合是scala.collection.
可变的
.Set

这可能很烦人,Scala集合中的名称重载是它的一大弱点

值得一提的是,如果您导入了
scala.collection.\u
imported,您可能已经将
HashMap
类型编写为:

new HashMap[ Integer, mutable.Set[ TreeNode ] ]