0

我刚开始学习 Scala 时有一点 Java 经验。我想知道,Java 的 Scala 的数据类型是Collection <?> args什么?

4

2 回答 2

4

首先,Scala 集合与 Java 集合形成了独立的库。当然,您可以使用来自 Scala 的 Java 集合,但这通常是在与一些 Java API 互操作的代码中完成的,而纯 Scala 代码通常使用 Scala 集合。

至于你的问题,通配符在 Scala 中用下划线字符表示,所以是的,Java 类在 Scala 中java.util.Collection<?>看起来像java.util.Collection[_]

顺便说一句,如果你想要类型边界,即类似Collection<? extends SomeClass>,那么它们是通过以下语法实现的:

Collection<? extends SomeClass>   ->   Collection[_ <: SomeClass]
Comparator<? super SomeClass>     ->   Comparator[_ >: SomeClass]

但是,正如我所说,您最好不要在纯 Scala 代码中使用 Java 集合,因为它们比 Scala 对应物更不方便。Scala 集合具有更复杂的层次结构,但是没有直接等效于 Java 的集合Collection。你可以阅读这个关于 Scala 集合的优秀教程,尤其是这个页面,它显示了 Scala 集合的层次结构。

于 2013-06-15T07:21:13.280 回答
1
Collection <?> args

It's written Collection (pronounced "collection of unknown"), that is, a collection whose element type matches anything. It's called a wildcard type for obvious reasons.

Read more about wildcards here

For Scala Existential types and Usage of WildCards in Scala

于 2013-06-15T06:43:08.267 回答