версия kotlin: 1.3.50
В примере кода я хочу использовать метод compareTo
для сравнения только между экземплярами того же подкласса, например, dog
сравнивается только с dog
.
Я думаю, было бы лучше, если бы compareTo
принимал только подкласс, но Animal
. Но я не знаю, как это сделать. Есть хорошая идея?
abstract class Animal{
abstract fun compareTo(other: Animal)
// I want to implement like `abstract fun compareTo(other: this::class)`
}
class Dog: Animal(){
override fun compareTo(other: Animal) {
assert(other is Dog)
// do something
}
}
class Cat: Animal(){
override fun compareTo(other: Animal) {
assert(other is Cat)
// do something
}
}