Проблемы, определяющие оператор equals ()

У меня есть класс

open class Texture 

и я бы хотел определить оператор equals(other: Texture)

operator fun equals(other: Texture) = ...

но я получаю

Ошибка: (129, 5) Kotlin: модификатор 'operator' не применим к этой функции: должен переопределять '' equals () '' в Any

Что это значит?

Если я изменю это на

operator fun equals(other: Any) = ...

Случайное переопределение, два объявления имеют одну и ту же подпись jvm

Оператор equals() определен в Any , поэтому он должен быть переопределен с совместимой сигнатурой: его параметр other должен иметь тип Any? , и его возвращаемое значение должно быть Boolean или его подтип (он является окончательным) :

 open class Texture { // ... override operator fun equals(other: Any?): Boolean { ... } } 

Без модификатора override ваша функция столкнется с Any::equals , следовательно, будет случайным переопределением. Кроме того, equals() не может быть расширением ( как и toString() ), и он не может быть переопределен в интерфейсе.

В IntelliJ IDEA вы можете использовать Ctrl + O для переопределения члена или Ctrl + Insert для создания equals() + hashCode()