为什么Kotlin
中的Array<T>
课程没有实现Iterable<T>
?
快速查看documentation表明它已经有iterator()
方法。
答案 0 :(得分:31)
Kotlin旨在与Java完全互操作。 Array<X>
在运行时和Java的角度都是X[]
。 Java数组不会实现Iterable
,因此Kotlin数组(实际上是相同的)也不行。
我们可以通过创建一个与Java数组无关的独立类来使我们的数组实现Iterable
。但是,为了保持与Java的兼容性,我们必须执行从这种类型到Java数组的隐式转换。由于性能开销和不明确的对象标识语义,隐式转换通常不是完美的方法。在这里他们也只能解决问题的一半,因为你仍然需要手动&#34; box&#34;从Java调用Kotlin代码时的数组。这就是为什么这种解决方案不被认为是可行的原因。