Относительно вашей реализации проблем нет, но вы могли бы упростить ее:
data class Car(val year: Int): Comparable<Car> {
override fun compareTo(other: Car) = year - other.year
}
Не следует реализовывать интерфейс Iterable
, потому что это сделает Car
своего рода коллекцией.
Запуск следующего примера с заданной реализацией Car
listOf(Car(2004), Car(2007), Car(2001)).run {
println(this)
println(min())
println(max())
println(sorted())
}
возвращает результат
[Car(year=2004), Car(year=2007), Car(year=2001)]
Car(year=2001)
Car(year=2007)
[Car(year=2001), Car(year=2004), Car(year=2007)]