Почему Kotlin Array <T> не реализует Iterable <T>

Почему класс Array<T> в Kotlin реализует Iterable<T>?

Быстрый просмотр документа показывает, что он уже имеет iterator().

Ответы

Ответ 1

Kotlin разработан, чтобы полностью взаимодействовать с Java. Array<X> является X[] как во время выполнения, так и с точки зрения Java. Массивы Java не реализуют Iterable, поэтому массивы Kotlin (которые практически одинаковы) не работают.

Мы могли бы реализовать наши массивы Iterable, создав автономный класс, который не относится к массивам Java. Однако, чтобы поддерживать совместимость с Java, нам пришлось бы выполнять неявные преобразования из такого типа в массивы Java и обратно. Неявные преобразования, как правило, не являются идеальным подходом из-за чрезмерной производительности и неясности семантики идентификации объекта. Здесь они также решат только половину проблемы, так как вам все равно придется вручную "помещать" массивы при вызове кода Kotlin с Java. Вот почему такое решение не рассматривалось как возможно.