Reputation: 41
I'm having trouble implementing the iterator
and get
set
functions. (Edit: By trouble I mean that I don't know how to do it and I need help)
In the past, I've inherited from ArrayList
even though I need a fixed-size collection.
I've also used an Array
property in my class and added a get
and a set
operator funcions, but these two solutions just feel like unnecessary workarounds.
Edit: I just found out that Kotlin itself doesn't have a List
implementation yet (it uses ArrayList
instead), So maybe I'm not supposed to be able to Implement it. I'm going to keep this open just in case.
Upvotes: 0
Views: 2966
Reputation: 4630
There is a very neat feature in Kotlin that allows you to easily implement the List
interface by Delegation. Just use the by
operator on a list property, then the class will delegate all methods of the List
interface to that property. So, for example, instead of,
class Cars {
private val cars = ArrayList<Car>()
}
you write:
class Cars(
private val cars: MutableList<Car> = ArrayList<Car>()
): MutableList<Car> by cars
Now Cars
implements List
, and can be used just as such:
val cars = Cars()
cars.add(Car())
for (car in cars)
car.vroom()
Upvotes: 5