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

44

无法为数组实现通用函数的解决方案是尽可能使用List接口。 - voddan
1个回答

49

Kotlin旨在与Java完全兼容。 Array<X>在运行时和从Java的角度来看都是X[]。Java数组不实现Iterable,因此Kotlin数组(几乎相同)也不实现。

我们可以通过创建一个与Java数组无关的独立类来使数组实现Iterable。但是,为了保持与Java的兼容性,我们必须执行从这种类型到Java数组的隐式转换以及从Java数组回到该类型时的转换。隐式转换通常不是最佳选择,因为会产生性能开销和不清晰的对象标识语义。在这里,它们只解决了问题的一半,因为您仍然需要在从Java调用Kotlin代码时手动“装箱”数组。这就是为什么这种解决方案被认为不可行的原因。


36
补充一点:asIterable 将会给你一个包装对象,该对象是 Iterable - user824425
5
除了 asIterable 之外,还有 asList(详见链接)。 - 4castle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接