In Kotlin, you must override either both or neither of the equals(Any?) and hashCode() methods in order to keep the
contract between the two:
hashCode method is invoked on the same object more than once, it must consistently return the same integer, provided
no information used in equals comparisons on the object is modified. equals method, then calling the hashCode method on each of the two objects
must produce the same integer result. By overriding only one of the two methods with a non-trivial implementation, this contract is almost certainly broken.
class MyClass { // Noncompliant - should also override "hashCode()"
override fun equals(other: Any?): Boolean {
/* ... */
}
}
class MyClass { // Compliant
override fun equals(other: Any?): Boolean {
/* ... */
}
override fun hashCode(): Int {
/* ... */
}
}