Задачи определения оператора 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()