为什么Kotlin Array <T>没有实现Iterable <T>

Eri*_*ric 24 types interface kotlin

为什么不在Array<T>课堂上Kotlin实施Iterable<T>

快速浏览一下文档就会发现它已经有了一个iterator()方法.

Ale*_*lov 31

Kotlin旨在与Java完全互操作.Array<X>X[]两者在运行时从Java的观点.Java数组没有实现Iterable,因此Kotlin数组(实际上是相同的)并不是这样.

我们可以Iterable通过创建一个与Java数组无关的独立类来实现我们的数组.但是,为了保持与Java的兼容性,我们必须执行从这种类型到Java数组的隐式转换.由于性能开销和不明确的对象标识语义,隐式转换通常不是完美的方法.在这里,他们也只能解决问题的一半,因为在从Java调用Kotlin代码时,你仍然需要手动"装箱"数组.这就是为什么这种解决方案不可行的原因.

  • 要添加:[`asIterable`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-iterable.html)将为您提供一个"Iterable"的包装器对象. (23认同)
  • 除了 asIterable 之外,还有 [`asList`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-list.html)。 (4认同)