equals()
但不重写 hashCode()
(或者相反操作)的类。
同时还报告重写 equals()
或 hashCode()
的对象声明。
这可能会导致在将类添加到 Collection
时产生不良行为
示例:
class C1 {
override fun equals(other: Any?) = true
}
class C2 {
override fun hashCode() = 0
}
object O1 {
override fun equals(other: Any?) = true
}
object O2 {
override fun hashCode() = 0
}
该快速修复会为类重写 equals()
或 hashCode()
方法并为对象删除这些方法:
class C1 {
override fun equals(other: Any?) = true
override fun hashCode(): Int {
return javaClass.hashCode()
}
}
class C2 {
override fun hashCode() = 0
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
return true
}
}
object O1 {
}
object O2 {
}