У меня есть перечисление SupportUsLevel
, определенное в Kotlin.Его необработанный тип - строка (по другим причинам), но я включил значение numeric
в качестве Int
для облегчения сравнения.Я хочу сравнить это перечисление с другим перечислением, но это также может быть нулевым.Итак, я реализовал оператор сравнения, который принимает обнуляемое значение other
:
enum class SupportUsLevel(val value: String) {
red("red"),
blue("blue"),
black("black");
val numeric: Int
get() {
when (this) {
red -> return 1
blue -> return 5
black -> return 7
}
}
//return 0 if equal, negative (-1) is smaller, positive(+1) is bigger
operator fun SupportUsLevel.compareTo(other: SupportUsLevel?) : Int {
//if other is null, since I cannot be null, I am always bigger
if (other == null) {
return 1
}
//return numeric comparison since we both now have a value (due to null-check before)
return numeric.compareTo(other.numeric)
}
}
Однако, когда я хочу его использовать, кажется, что это пользовательское сравнение не распознается компилятором?Я получаю несоответствие типов: