我刚开始学习 Scala 时有一点 Java 经验。我想知道,Java 的 Scala 的数据类型是Collection <?> args
什么?
2 回答
首先,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 集合的层次结构。
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.