Kotlin знак равенства (==) не распознан - PullRequest
2 голосов
/ 30 марта 2020

У меня очень странное поведение при использовании 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

Наблюдение I : Когда я раскомментирую метод AbstractAuditable s, все работает.

Наблюдение II : Как указано в документации , знак == ищет метод equals(Any?). и в этом случае он не может найти его, потому что только метод equals в родительской иерархии является методом AbstractPersistable s equals(Object).

Наблюдение III : Использование === работает.

Наблюдение IV : Это не проблема IntelliJ. Сборка из командной строки дает те же результаты

Почему Kotlin не может использовать метод equals(Object) из класса java в качестве equals(Any?) эквивалента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...