通常,我一直以这种方式声明地图,因为我需要将其为空

var myMap: mutable.Map[String, ListBuffer[Objects]] = mutable.Map[String, ListBuffer[Objects]]()


对象类型签名很长,因此我试图在如下所示的包对象中声明自己的类型别名。

type MyMapType = mutable.Map[String, ListBuffer[Objects]]


问题是,当我尝试使用别名声明地图时,它似乎无法正常工作。

var myMap: MyMapType = MyMapType()


我说错了


类型ListBuffer [Objects]的表达式不符合预期的类型MyPackageObject.MyMapType

最佳答案

试试这个:

import collection.mutable.{Map, ListBuffer}
type MyMapType = Map[String, ListBuffer[Object]]
var myMap: MyMapType = Map()


起作用的原因:Map()Map.apply()的快捷方式。这是对称为Map的对象的方法调用。它是mutable.Map的伴随对象。它的名称属于一组完全独立的标识符:类型的名称与对象的名称无关。因此,伴随对象Map仍称为Map。请注意,由于类型推断,您可以忽略.apply()的所有类型参数。

07-26 03:29