У меня очень странное поведение при использовании Kotlin класса.
У меня есть эти простые классы:
ClassA
class:
@Entity
class ClassA() : AbstractAuditable<Long>()
AbstractAuditable
класс
open class AbstractAuditable<T : Serializable> : AbstractPersistable<T>() {
// @Suppress("RedundantOverride")
// override fun equals(other: Any?): Boolean {
// return super.equals(other)
// }
}
AbstractPersistable
JAVA класс имеет переопределенный метод равенства
@Override
public boolean equals(Object obj) {
}
Странно то, что когда я пытаюсь использовать оператор равенства ==
это не может быть решено.
![enter image description here](https://i.stack.imgur.com/z5L3M.png)
Наблюдение I : Когда я раскомментирую метод AbstractAuditable
s, все работает.
Наблюдение II : Как указано в документации , знак ==
ищет метод equals(Any?)
. и в этом случае он не может найти его, потому что только метод equals
в родительской иерархии является методом AbstractPersistable
s equals(Object)
.
Наблюдение III : Использование ===
работает.
Наблюдение IV : Это не проблема IntelliJ. Сборка из командной строки дает те же результаты
Почему Kotlin не может использовать метод equals(Object)
из класса java в качестве equals(Any?)
эквивалента?