Problemas para definir el operador equals ()

Tengo una class

open class Texture 

y me gustaría definir el operador de equals(other: Texture)

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

pero yo obtengo

Error: (129, 5) Kotlin: el modificador 'operator' no es aplicable en esta function: debe anular '' equals () '' en Any

Qué significa eso?

Si cambio eso a

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

Anulación accidental, dos declaraciones tienen la misma firma jvm

La function de operador equals() se define en Any , por lo que debe ser anulada con una firma compatible: su parámetro other debe ser de tipo Any? , y su valor de retorno debe ser Boolean o su subtipo (es final) :

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

Sin el modificador de override , su function chocará con Any::equals , de ahí la anulación accidental. Además, equals() no puede ser una extensión ( como toString() ), y no puede ser anulada en una interfaz.

En IntelliJ IDEA, puede usar Ctrl + O para anular un miembro, o Ctrl + Insertar para generar equals() + hashCode()