【发布时间】:2013-06-15 06:42:03
【问题描述】:
我刚开始学习 Scala,并有一点 Java 经验。我想知道,Java 的 Collection <?> args 之一的 Scala 数据类型是什么?
【问题讨论】:
我刚开始学习 Scala,并有一点 Java 经验。我想知道,Java 的 Collection <?> args 之一的 Scala 数据类型是什么?
【问题讨论】:
首先,Scala 集合与 Java 集合形成了独立的库。当然,你可以使用 Scala 中的 Java 集合,但这通常是在与一些 Java API 互操作的代码中完成的,而纯 Scala 代码通常使用 Scala 集合。
至于您的问题,通配符在 Scala 中用下划线字符表示,所以是的,Java 类 java.util.Collection<?> 在 Scala 中看起来像 java.util.Collection[_]。
顺便说一句,如果你想要类型边界,也就是 Collection<? extends SomeClass> 之类的东西,那么它们可以通过以下语法实现:
Collection<? extends SomeClass> -> Collection[_ <: SomeClass]
Comparator<? super SomeClass> -> Comparator[_ >: SomeClass]
但是,正如我所说,您最好不要在纯 Scala 代码中使用 Java 集合,因为它们比 Scala 对应物更不方便。 Scala 集合具有更复杂的层次结构,但没有与 Java Collection 直接等效的对象。你可以阅读 this Scala 集合的优秀教程,尤其是 this 页面,它显示了 Scala 集合的层次结构。
【讨论】:
Collection <?> args
写作Collection(读作“未知的集合”),即元素类型匹配任何东西的集合。出于显而易见的原因,它被称为通配符类型。
【讨论】:
Collection[_]?