m: util.AbstractMap[_, _]
和m: util.AbstractMap
之间的区别是什么?
PS。我认为这个问题适用于任何集合,而不仅仅是这个集合。
答案 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有关此主题的详细阅读更多详情。