Задачи определения оператора equals()
у меня есть класс
open class Texture
и я хотел бы определить equals(other: Texture)
оператор
operator fun equals(other: Texture) = ...
но я
Error: (129, 5) Kotlin: модификатор "operator" неприменим к этой функции: должен переопределять "equals ()" в любом
что это значит?
если я изменю это на
operator fun equals(other: Any) = ...
случайное переопределение, два объявления имеют одинаковый jvm подпись
1 ответов
на equals()
функция оператора определена в Any
, поэтому он должен быть переопределен совместимой сигнатурой: его параметр other
должно иметь тип Any?
, и ее возвращаемое значение должно быть Boolean
или его подтипа (конец):
open class Texture {
// ...
override operator fun equals(other: Any?): Boolean { ... }
}
без the override
модификатор ваша функция будет столкновение с Any::equals
, следовательно, случайное переопределение. Кроме того,equals()
не может быть продолжением (как toString()
), и его нельзя переопределить в интерфейсе.
в IntelliJ IDEA вы можете использовать Ctrl+O для переопределения члена или Ctrl+вставить для создания equals()
+hashCode()