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