如何在Kotlin中实现Collection / List接口或抽象类?

时间:2018-09-27 10:50:25

标签: list collections interface kotlin abstract-class

我在实现iteratorget set函数时遇到麻烦。 (编辑:麻烦,我的意思是我不知道该怎么做,我需要帮助)

过去,即使我需要固定大小的集合,我还是继承自ArrayList。 我还在类中使用了Array属性,并添加了getset运算符函数,但是这两个解决方案就像是不必要的解决方法。

编辑:我刚刚发现Kotlin本身还没有List实现(而是使用ArrayList),所以也许我不应该能够实现它。我将保持打开状态,以防万一。

1 个答案:

答案 0 :(得分:0)

Kotlin中有一个非常简洁的功能,可让您通过Delegation轻松实现List接口。只需在属性上使用by运算符即可,例如,代替

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

您写:

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

现在Cars现在实现了List,可以这样使用:

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