Scala:`m:util.AbstractMap [_,_]`vs`m:util.AbstractMap`?

时间:2016-01-20 09:47:53

标签: scala

m: util.AbstractMap[_, _]m: util.AbstractMap之间的区别是什么?

PS。我认为这个问题适用于任何集合,而不仅仅是这个集合。

1 个答案:

答案 0 :(得分:1)

在scala中,您必须提供类型参数。所以从字面意义上讲,你不能做new util.AbstractMap

好吧,如果你想到它,它是正确的。在Java中,可以避免给出参数类型和代码编译,以便向后兼容pre-java5代码。但是在scala中,泛型从一开始就是其中的一部分。

如果问题是这样的话:

trait MonoidK[F[_]]{...}
MonoidK[List].combine[Int](List(1,2,3),List(4))

如果我们没有为List提供参数类型,那么在这种情况下List是一个类型构造函数,必须在以后提供参数(在combine方法中)。在这种情况下,MonoidK被称为更高级的kinded类型。 This有关此主题的详细阅读更多详情。