什么.asInstanceOf [Foo [_&lt ;: Bar]]是什么意思?

时间:2015-09-14 17:32:35

标签: scala iterator

我是Scala的新手,在浏览示例scala项目时遇到了这行代码。有人可以向我解释下面粗体代码的目的:

struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])

我知道我们正在为struct对象生成一个迭代器,但是asInstanceOf函数的目的到底是什么,以及它在同一个程序中的其他地方有什么区别,迭代器只是通过以下方式生成: p>

struct.iterator()

1 个答案:

答案 0 :(得分:1)

struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])

让我们逐个分享。

.asInstanceOf - 它类似于javas强制转换操作符,它将类型更改为:

Iterator[type] - 允许迭代元素序列的数据结构

_ <: Product2[Any, Any] - 这里有点棘手。 A&lt;:B意味着B必须是A

的子类型

详情请访问: http://docs.scala-lang.org/tutorials/tour/variances.htmlhttp://blogs.atlassian.com/2013/01/covariance-and-contravariance-in-scala/

如果您想了解更多关于协方差和逆变的信息,请查看Martin的Odersky视频。