scala – Map和Set的实际类(不是抽象而不是特征)是什么?
发布时间:2020-12-16 18:06:16 所属栏目:安全 来源:网络整理
导读:在 Scala中,可以通过以下方式创建地图和集合文字: val m = Map(1-"a") 参考m和文字的类型都是Map [Int,String]. 但是,scala文档显示Map实际上是一个特征,需要实现抽象成员才能实例化: scala.collection.Map , scala.collection.immutable.Map , scala.coll
在
Scala中,可以通过以下方式创建地图和集合文字:
val m = Map(1->"a") 参考m和文字的类型都是Map [Int,String]. 但是,scala文档显示Map实际上是一个特征,需要实现抽象成员才能实例化: 所以我的问题是:文字地图所依据的实际具体类是什么?上述同样的问题也适用于Set. 解决方法
您可以使用getClass找到具体的运行时类:
scala> println(m.getClass) class scala.collection.immutable.Map$Map1 所以它是 scala> val m2 = Map(1 -> "a",2 -> "b") m2: scala.collection.immutable.Map[Int,String] = Map(1 -> a,2 -> b) scala> println(m2.getClass) class scala.collection.immutable.Map$Map2 这是一个不同的类.让我们尝试一个包含更多元素的地图: scala> println((0 to 10).map(i => i -> i.toString).toMap.getClass) class scala.collection.immutable.HashMap$HashTrieMap 这是另一堂课. 简而言之,您从Map(…)或toMap获取的具体运行时类是一个实现细节,绝大多数时候您不需要担心它(但是当您这样做时,可以使用getClass进行检查) ). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |