Как я могу реализовать интерфейс коллекции / списка или абстрактный класс в Kotlin? - PullRequest
0 голосов
/ 27 сентября 2018

У меня проблемы с реализацией функций iterator и get set.(Правка: под проблемой я имею в виду, что я не знаю, как это сделать, и мне нужна помощь)

В прошлом я наследовал от ArrayList, хотя мне нужна коллекция фиксированного размера.Я также использовал свойство Array в своем классе и добавил функции операторов get и set, но эти два решения просто кажутся ненужными обходными путями.

Редактировать: я только что узнал, чтоСам Kotlin еще не имеет реализации List (вместо этого он использует ArrayList), поэтому, возможно, я не должен быть в состоянии реализовать ее.Я собираюсь оставить это открытым на всякий случай.

1 Ответ

0 голосов
/ 30 сентября 2018

В Kotlin есть очень удобная функция, которая позволяет легко реализовать интерфейс List с помощью Delegation .Просто используйте оператор by для свойства, поэтому вместо, например,

class Cars {
    private val cars = ArrayList<Car>()
}

вы пишете:

class Cars(private val cars: MutableList<Car>): MutableList<Car> by cars

Now Cars реализует List сейчас и можетиспользовать только так:

val cars = Cars(ArrayList())
cars.add(Car())
for (car in cars)
    car.vroom()
...